Objective c 目的C CFSWAPIN32

Objective c 目的C CFSWAPIN32,objective-c,Objective C,我想创建一个siple应用程序,它交换2字节和4字节十六进制代码的字节 所以它应该这样做:从1234交换到3421交换。我在谷歌上搜索,发现我必须使用字节顺序、CFSWAPINT3和CFSwapInt16 以下是我已经得到的: NSString *byteOrder = [NSString stringWithFormat:@"%d",CFSwapInt32(12345678)]; NSLog(byteOrder); 但我得到的不是正确的交换字节:1315027968作为NSLog的编

我想创建一个siple应用程序,它交换2字节和4字节十六进制代码的字节

所以它应该这样做:从1234交换到3421交换。我在谷歌上搜索,发现我必须使用字节顺序、CFSWAPINT3和CFSwapInt16

以下是我已经得到的:

NSString *byteOrder = [NSString stringWithFormat:@"%d",CFSwapInt32(12345678)];
    NSLog(byteOrder);
但我得到的不是正确的交换字节:1315027968作为NSLog的编号

有人能帮帮我或告诉我我做错了什么吗?:)我只想交换字节,使它们的顺序相反

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

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

试试看

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x12345678)];
%x
将输出十六进制值

0x
开头的数字将解释为十六进制值。

试试看

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x12345678)];
%x
将输出十六进制值


0x
开头的数字将解释为十六进制值。

您的原始数字是12345678,十六进制是0x00BC614E

日志中的输出为1315027968,十六进制为0x4E61BC00

所以一切都正常运转

如果您愿意,可以尝试使用十六进制执行相同的操作:

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x00BC614E)];
NSLog(byteOrder);
应记录0x4E61BC00,同时

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

应该记录0x78563412

您的原始号码是12345678,十六进制是0x00BC614E

日志中的输出为1315027968,十六进制为0x4E61BC00

所以一切都正常运转

如果您愿意,可以尝试使用十六进制执行相同的操作:

NSString *byteOrder = [NSString stringWithFormat:@"%x",CFSwapInt32(0x00BC614E)];
NSLog(byteOrder);
应记录0x4E61BC00,同时

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

日志0x78563412应为十进制。构成它的字节与数字不对应。;)另外,您不应该直接使用
CFSwapInt32()。首选指示源订单和所需订单的变体(例如,
CFSwapInt32HostToBig()
)。并非所有系统都以相同的顺序存储字节,
CFSwapInt32()
将根据使用的系统给出不同的结果。
12345678
是十进制的。构成它的字节与数字不对应。;)另外,您不应该直接使用
CFSwapInt32()。首选指示源订单和所需订单的变体(例如,
CFSwapInt32HostToBig()
)。并非所有系统都以相同的顺序存储字节,
CFSwapInt32()
将根据使用的系统给出不同的结果。谢谢。不幸的是,15岁以下的代表我不能投票给你,谢谢你。不幸的是,15岁以下的代表我不能投票支持你