首页 > 编程知识 正文

c语言数组定义和赋值,如需发送的二进制序列为1001011

时间:2023-05-04 17:53:05 阅读:168827 作者:512

在char数组中插入0x00。

方法一:方法一短组码,简单易实现; 在长的组码中,由于一点失误就会数错字节数,很难检测出哪个字节有问题

方法:短组码无需使用方法2,对于长组码,组码方便,字节数不会错

代码的最终实现

charbuff [ ]={0x00,0x 00,0x 00,0x 00,0x 71,0x 00,0x 03,0 x02 }方法1 (逐个插入) char *bufffff,0x 00的自动转换函数TT tessess 但是,由于char *buffffff和char gggbuff_send[1024]所指的存储器是同一块,所以通过借用buffff可以实现对char gggbuff_send[1024]的填充

staticintTTtest(char*bufffff )//{ int nRet=0; unsigned char a=0x00; //版本号unsigned int b=0x71; unsigned int c=0x03; unsigned int d=0x02; char nthreebyte[3]; memset(nthreebyte,0x 00,3 ); memcpy(buffff,a,1 ); memcpy(buffff[1],nthreebyte,3 ); memcpy(buffff[4],b,1 ); memcpy(buffff[5],nthreebyte,3 ); memcpy(buffff[8],c,1 ); memcpy(buffff[9],d,1 ); return nRet; }void main () { char gggbuff_send[1024]; TTtest(gggbuff_send; (方法2 ) sprintf ):char gbuff_send[1024];//将两个char转换为一个hex//示例:0x 370 x31----0x 71 staticvoidformat _ two char _ to _ one hex (char * peer,int peer_len ) { memset(temp,0,sizeof ) temp ); memcpy(temp,peer,peer_len ); for(intI=0,j=0; i peer_len; i=i 2,j ) (if ) ) peer[i]='z ' ) peer[i]='z ' ) { temp[i]=peer[i] -'a' 0x0a; } else { temp[i]=peer[i] -0x30; }if () peer[i 1]='z ' ) (peer[i 1]='z ' ) ) { temp[i 1]=peer[i 1] -'a' 0x0a; } else { temp[i 1]=peer[i 1] -0x30; ) gbuff_send[j]=(temp[I]4) temp[i 1]; }}int main () { unsigned char a=0x00; //1字节unsigned int b=0x71; //int为4个字节,0x71为1个字节,剩下3个字节为0x00 unsigned char c=0x00; unsigned int d=0x0302; //int是4个字节,0x0302是2个字节,剩下的2个字节是0x00sprintf(buff,' xxxx ',a,b,c,d ); //此时,buff表示字符“0”“0”“0”“0”“0”“0”“7”“0”“0”“0”“0”“3”“0” buff按字符存储十六进制的0 x300 x300 x300 x300 x300 x300 x300 x300 x 370 x 310 x300 x300 x 300 x 300 x 32//buff,按所需格式///所需格式format_twochar_to_oneHEX(buff,20 ); 得到gbuff_send的是想要得到的格式return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。