32 位和 64 位编译之间的 objective-c 字节数组长度不同 [duplicate]

objective-c byte array length different between 32 and 64 bit compile [duplicate]

提问人:user1391606 提问时间:1/31/2015 更新时间:1/31/2015 访问量:604

问:

我在.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

Objective-C 数组 字节 32 位-64 位

评论

0赞 rmaddy 1/31/2015
sizeof不给出字节数组的长度。它给出指针的大小。无论您在数组中存储多少字节,您都会得到 4 和 8。

答:

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!?