0

アプリに、16 進値をファイルに書き込みたいメソッドがあります (基本的に、書き込まれたバイトからイメージを作成します)。値を適切にエンコードして画像を生成する方法がわかりません。任意の提案をいただければ幸いです - ありがとう。

- (void)makeImage {

@autoreleasepool {

    NSString* hexValues = @"8950..." // these are the hex bytes that make up the image file

    NSString* fileName    = @"image.png";
    NSString* homeDir     = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/"];

    NSString* fullPath = [homeDir stringByAppendingPathComponent:fileName];

    NSError* error = nil;
    [lastLine writeToFile:fullPath atomically:NO encoding:NSASCIIStringEncoding error:&error];

}
4

1 に答える 1

0

非可逆 ASCII エンコーディングまたは UTF-8 を使用して NSData の NSString を変換できます。その後、メソッド -[NSData bytes] を使用して生のバイトを取得できます。

for ループを使用して、一度に 2 バイトずつループします。その後、2 バイト/文字をサイズ 3 の char 配列にコピーできます (\0 を含めるには、必ず " で初期化してください)。 00" を使用して終端の \0 を取得すると、c 関数を使用できます

long int strtol ( const char * str, char ** endptr, int base );

2 バイト/16 進数を整数に変換します。

または、終了 \0 を必要としない独自の 16 進文字列を int に書き込むこともできます。

于 2012-09-07T00:00:33.107 に答える