您的位置:首页 > 移动开发 > IOS开发

ios socket传16进制参数

2015-06-04 19:46 323 查看
这段时间公司做一个项目 与智能硬件交互的项目,需要用socket 通过16进制参数进行交互;
构造遥控数据帧 AC 01 00 32 00 5E 0B 02 01 9F 以这种形式;

unsigned
char cmd_switch[10];
cmd_switch[0]=(char)0xAC;//start
cmd_switch[1]=(char)0x1;//num
随便填
//device address begin
cmd_switch[2]=(char)0x0;
cmd_switch[3]=(char)0x32;
cmd_switch[4]=(char)0x0;
cmd_switch[5]=(char)0x5e;
//device address end
cmd_switch[6]=(char)0x0B;// command
cmd_switch[7]=(char)0x02;//data length
cmd_switch[8]=(char)0x01;//data

cmd_switch[9]=(char)0x0;//校验位,先初始化
NSData *senddata = [NSData
dataWithBytes: cmd_switch
length:10];
NSLog(@"send电量页面
:%@",senddata);
[socket
writeData:senddata withTimeout:-1
tag:0];

这是写死数据,如果需要通过变量进行动态获取数据怎么办 我的char[]怎么往里面拼呢。我之前还傻傻的将0x通过字符串与变量拼进去放到数组里面 其实不是的0x代表16进制;后来通过各种尝试 找到了方法:将传入的数据变成十进制数据 放到数组里 例如 char[5]=(char)0x5e;将0x5e变成十进制 5*16+14=94 就是对应的十进制 然后char[5]=94
然后通过NSData *senddata = [NSData dataWithBytes: cmd_switch length:10];方法自动转换成16进制。至于原理
我现在还不知道 可能是进行自动转换;解决了我很大问题;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: