oc 16进制字符串与10进制的转换 两行代码搞定
下面是一个帐号的转换,需要给渔船设备传递16进制的字符串,之后经设备进行北斗与服务间的通信,下面是转换的方式: NSLog(@"%x",50038); 2016-03-01 22:16:58.861 testStr[3855:369016] 12a401927 因为需要,整好必须是4个子节,然后16进制位8位,所以可以用以下方法进行转换 NSLog(@"%.8x",50038); 2016-03-01 22:22:27.647 testStr[3905:374086] 0000c376 这样的对比就比较明显了,.8x表示不足8位的在前面补0 反之需要对16进制转成10进制进行处理,也很简单,当初用了各种方法,比如单个截取然后转乘100进制,效率低下且容易出错,然而明明有更好的方法可以解决的,下面给出方法 NSLog(@"%ld",strtoul([@"0000c376" UTF8String],0, 16)); 2016-03-01 22:29:57.755 testStr[3978:380678] 50038 原则上16进制转成10进制调用了c语言的函数,具体以下,见下-- strtoul()会将参数nptr字符串根据参数base来转换成无符号的 长整型 数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制