0

我正在从存储在 NSData 对象中的蓝牙 LE 外围设备中检索 unix 时间戳。如果我将 NSData 对象的内容打印到调试控制台,它们看起来是正确的,但是如果我尝试将 NSData 对象转换为整数值,则整数值似乎会不断变化。

NSData *refinedData = [mfrData subdataWithRange:range];

这会在调试控制台上产生 386d5e9a 的值。

然后我转换为整数:

uint32_t unixTimeStamp = refinedData;

最初,这会在调试控制台上产生 342162144 的值。然而,尽管 NSData 没有改变,但这个值一直在增长。任何人都可以帮助我了解发生了什么吗?

如果还不是很明显,我是新手。

谢谢。

4

1 回答 1

1

refinedData是一个指向 NSData 实例的指针。你想访问它的内容:

uint32_t unixTimeStamp = *(uint32_t *)[refinedData bytes];

请注意,这是简化的,并假设蓝牙外围设备返回的字节与您设备中的处理器的字节序相同,这range是正确的,等等。

于 2013-10-02T01:02:34.290 回答