NSSwap を使用して 32 ビット符号なし整数のバイトをスワップしようとしています
私の元の NSInteger は13a81fbeで、次のようになりたい: be1fa813
走った後
NSInteger swappedInteger = NSSwapInt(unencodedInteger);
バイト値がbe1fa813の新しい整数を取得します。しかし、これをコンソールに出力しようとすると、-1105221613 が表示されます
私の完全なコードはこれです:
//get bytes within range
NSInteger unencodedInteger;
[mydata getBytes:&unencodedInteger range:myRange];
//swap the endianess of the bytes
NSInteger swappedInteger = NSSwapInt(unencodedInteger);
//debug logging
NSLog(@"Original: %x (%d) Swapped: %x (%d)",unencodedInteger, unencodedInteger,swappedInteger, swappedInteger);
//add swapped integer to array
[banks addObject:[NSNumber numberWithInteger:swappedInteger]];
新しいスワップされた値が署名されているかのように機能する理由を誰かが理解していますか?