Objective c 目的C CFSWAPIN32
我想创建一个siple应用程序,它交换2字节和4字节十六进制代码的字节 所以它应该这样做:从1234交换到3421交换。我在谷歌上搜索,发现我必须使用字节顺序、CFSWAPINT3和CFSwapInt16 以下是我已经得到的: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的编
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岁以下的代表我不能投票支持你