1

2 バイトと 4 バイトの 16 進コードのバイトを交換するシンプルなアプリを作成したいと考えています。

1234 から 3421 へのスワップです。グーグルで調べたところ、byteorder と CFSwapInt32 と CFSwapInt16 を使用する必要があることがわかりました。

これが私がすでに得たものです:

NSString *byteOrder = [NSString stringWithFormat:@"%d",CFSwapInt32(12345678)];
    NSLog(byteOrder);

しかし、スワップされた正しいバイトの代わりに、NSLog の番号として 1315027968 が得られます。

誰かが私を助けたり、私が間違ったことを教えてくれますか? :) バイトを入れ替えて逆順にしたいだけです

1234 -->3412
12 34 -->34 12

12345678 -->78563412
12 34 56 78 --> 78 56 34 12

ありがとうございました

4

2 に答える 2

1

試す

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x12345678)];

%x値を 16 進数として出力します。

数字を で始める0xと、16 進値として解釈されます。

于 2012-08-09T13:16:15.220 に答える
0

元の番号は 12345678 で、16 進数では 0x00BC614E です

ログに出力されるのは 1315027968 で、16 進数では 0x4E61BC00 です。

したがって、すべてが正しく機能しています。

必要に応じて、16 進数で同じことを試すことができます。

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x00BC614E)];
NSLog(byteOrder);

0x4E61BC00 を記録する必要があります。

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x12345678)];
NSLog(byteOrder);

0x78563412 をログに記録する必要があります

于 2012-08-09T13:26:43.430 に答える