ios socket传16进制参数

来源:互联网 发布:淘宝 搜索 黑技术 编辑:程序博客网 时间:2024/06/09 21:03
这段时间公司做一个项目 与智能硬件交互的项目,需要用socket 通过16进制参数进行交互;

构造遥控数据帧 AC 01 00 32 00 5E 0B 02 01 9F 以这种形式;

 unsignedchar 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 = [NSDatadataWithBytes: cmd_switch  length:10];

        NSLog(@"send电量页面%@",senddata);

        [socketwriteData:senddata withTimeout:-1tag: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进制。至于原理 我现在还不知道 可能是进行自动转换;解决了我很大问题;

0 0