提问人:user1391606 提问时间:1/31/2015 更新时间:1/31/2015 访问量:604
32 位和 64 位编译之间的 objective-c 字节数组长度不同 [duplicate]
objective-c byte array length different between 32 and 64 bit compile [duplicate]
问:
我在.h文件中定义了以下内容:
extern Byte cADPU_IDToken[];
并在相应的 .m 文件中:
Byte cADPU_IDToken[] = {0xDF,0x00,0x06,0x07};
在执行 iPad2(32 位)应用程序时,我得到以下代码:
NSData *test = [[NSData alloc] initWithBytes:cADPU_IDToken length:sizeof(&cADPU_IDToken)];
NSLog(@" ..ARM64... %lu", test2.length);
结果:4 个字节(没错)。
在iPad5(64位)上执行时,我得到的结果是:8个字节!?
我做错了什么以及如何解决,以便应用程序在任何 32/64 iPad/iPhone 上正常运行?
问候
S
答:
0赞
Avt
1/31/2015
#1
我建议你阅读 Cocoa 的 64 位过渡指南。 对于您的情况,解决方案是将“Byte”更改为“uint8_t”:
我们的建议是选择一个 C99 表示形式,可准确反映您的应用所需的值范围。
uint8_t:0 到 255
评论
0赞
user1391606
1/31/2015
将 Byte 更改为 uint8_t 并不能解决问题。结果它仍然是 8!?
评论
sizeof
不给出字节数组的长度。它给出指针的大小。无论您在数组中存储多少字节,您都会得到 4 和 8。