【发布时间】:2017-03-29 12:10:58
【问题描述】:
为什么当我尝试转换时,它会将十六进制值转换为整数?
unsigned int outVal;
NSScanner* scanner = [NSScanner scannerWithString:final1];
[scanner scanHexInt:&outVal];
NSLog(@"%u",outVal);
我尝试做的另一种方法是将它转换为正常的 integer 它给了我 0 值。 我只想要相同的字符:
int16_t a=0x401A;
我从用户那里得到这个数字,所以我没有控制权自己定义它。我想删除引号和数据类型 int16_t 以便我可以执行命令。
【问题讨论】:
-
如果您在
NSLog中使用十六进制格式 (@"%X"),您会看到正确的值吗? -
是的,我看到了正确的值,但我需要以整数形式将命令传递给 BLE 设备
-
你没有抓住重点。整数具有正确的数值;您将其视为十六进制还是十进制只是您在
NSLog()中使用的格式字符串的一个函数。 -
但 BLE 设备只接受这种格式的 0x401A 中的命令。如果我将此十六进制转换为整数,那么我会错过这个“0x”,那么蓝牙设备会认为错误的命令。
-
“0x”是字符串的一部分。它不是整数值的一部分。如果设备需要在命令中看到“0x”,那么它希望您发送一个字符串。
标签: ios objective-c nsstring ios-bluetooth