web-dev-qa-db-ja.com

文字列として表示するNSData

IPhoneアプリを作成していますが、次のことにこだわっています。

unsigned char hashedChars[32];
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];
NSLog(@"hashedData = %@", hashedData);

ログは次のように表示されます:

hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
  • hashedDataはNSStringであり、NSStringではないことに注意してください

しかし、私が必要なのはhashedDataをNSStringに変換することです:

NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";

そのため、基本的に結果はhashedDataのようである必要がありますが、山括弧とその間のスペースは必要ありません。

43
topace

私は解決策を見つけましたが、私は愚かだったと思います。

基本的に私がしなければならないことは次のとおりです。

NSString *someString = [NSString stringWithFormat:@"%@", hashedData]; // NSDataを強制的にNSStringにする

助けてくれたすべての人にもう一度感謝します。

22
topace

NSString initWithData:encoding:メソッドを使用します。

NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];

(編集してコメントに返信してください:)

その場合、ジョシュアの答えは役立ちます:

NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
64

問題のある文字を含む NSCharacterSet を定義し、-stringByTrimmingCharactersInSet:を使用して文字列をフィルターします。

2
Joshua Nozzi