我正在从Bluetooth LE外设中检索unix时间戳,该外设存储在NSData对象中。如果我将NSData对象的内容打印到调试控制台,它们看起来是正确的,但是如果我尝试将NSData对象转换为整数值,则整数值似乎不断变化。
NSData *refinedData = [mfrData subdataWithRange:range];
在调试控制台上产生值386d5e9a。
然后我转换为整数: uint32_t unixTimeStamp = refinedData;
最初,这会在调试控制台上产生值342162144。但是,尽管NSData没有变化,但这个值仍在增长。有人能帮我理解发生了什么吗?
如果还不是很明显,我是新手。
感谢。
答案 0 :(得分:1)
refinedData
是指向NSData实例的指针。您想访问其内容:
uint32_t unixTimeStamp = *(uint32_t *)[refinedData bytes];
请注意,这是简化的,并假设蓝牙外围设备返回的字节与设备中的处理器具有相同的字节顺序,range
是正确的等等。