繁体   English   中英

目标C CFSwapInt32

[英]Objective C CFSwapInt32

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

所以它应该做:从1234到3421交换。 我谷歌搜索,发现我必须使用字节序和CFSwapInt32和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的数字会将其解释为十六进制值。

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

您在日志中获得的输出是1315027968,以十六进制表示的是0x4E61BC00

因此,一切工作正常。

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

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

应该在登录时记录0x4E61BC00

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

应该记录0x78563412

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM