1

次のような NSString として格納されている長い 16 進値があります。

c12761787e93534f6c443be73be31312cbe343816c062a278f3818cb8363c701

char* として格納されているバイナリ値に変換するにはどうすればよいですか

4

3 に答える 3

1

これは少しずさんですが、正しい軌道に乗るはずです:

NSString *hexString = @"c12761787e93534f6c443be73be31312cbe343816c062a278f3818cb8363c701";
char binChars[128]; // I'm being sloppy and just making some room
const char *hexChars = [hexString UTF8String];
NSUInteger hexLen = strlen(hexChars);
const char *nextHex = hexChars;
char *nextChar = binChars;
for (NSUInteger i = 0; i < hexLen - 1; i++)
{
    sscanf(nextHex, "%2x", nextChar);
    nextHex += 2;
    nextChar++;
}
于 2009-05-28T03:42:04.687 に答える
0

数週間前に、Cocoa メーリング リストの 1 つで、この (または非常に類似した) 16 進変換のトピックに関するスレッドがありました。

ここで完全な議論を合理的に再現することはできません (長いスレッド) が、スレッドから始まるメッセージは次のとおりです。

http://www.cocoabuilder.com/archive/message/cocoa/2009/5/9/236391

このタスク用の Cocoa メソッドがあればいいのにと思いますが、(それが見つかるか実装が保留中の) コード ( http://www.cocoabuilder.com/archive/message/cocoa/2009/5に投稿された Gecko 氏によるもの) /10/236424 ) ここで動作するようです。

于 2009-05-28T14:24:58.200 に答える