【问题标题】:Convert Hex NSData to int in Objective C在Objective C中将Hex NSData转换为int
【发布时间】:2016-10-22 19:20:54
【问题描述】:

我们的定制智能路由器正在给我NSData 响应

这里,800c 是我的 deviceId。如何将其转换为int

deviceId =32780;

当我向路由器发送命令时,我构建了它,

Byte mqttData[12];

mqttData[0] =[[NSNumber numberWithUnsignedChar:(deviceID >> 8) & 0xFF] intValue];
//mqttData[0]=128 or 80 in Hex

mqttData[1] =[[NSNumber numberWithUnsignedChar:deviceID & 0xFF] intValue];
//mqttData[1]=12 or 'C' in Hex

return [NSData dataWithBytes:mqttData length:sizeof(mqttData)];

【问题讨论】:

  • 使用NSData *deviceIDData = [theDataResponse subdataWithRange:NSMakeRange(0,2)], int deviceId; [deviceIDData getBytes:&deviceId length:sizeof(int)]; ?
  • 为什么NSNumber会参与其中?
  • @Lamre deviceId : 5508224。但它是 32780
  • int deviceId = CFSwapInt16BigToHost(*(int*)([deviceIDData bytes]));
  • Converting NSData to int的可能重复除了是CFSwapInt16BigToHost而不是CFSwapInt32BigToHost,但逻辑是一样的。

标签: ios objective-c int hex nsdata


【解决方案1】:
int deviceId = CFSwapInt16BigToHost(*(int*)([deviceIDData bytes]))

答案取自 Larme 的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 2011-11-11
    • 2011-09-18
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多