再次麻烦大家了,如果我定义一个数组AA[2]={0X20,0X00};想把这个数组原原本本的输出到.txt文本中,怎么做呢?我试验的结果总是:20 0 而我想要的结果是20 00 说白了就是怎么才能把0x00输出成00呢,谢谢!!
帖子排列有点问题,没怎么明白. 如果你想写成00的话,必须写两个0X30,底层是ANSIC码
谢谢回复,再具体点就是 定义:AA[2]={0X20,0X00}; 调用时:len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%x\xd\xa", AA[i] ); 输出为:20 0 但是我想要的结果是: 20 00
上面打错了:
调用时:len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%x\xd\xa", AA[i] );//循环调2次。
"%x\xd\xa", 0x00肯定会被认为是0的.除非你写成两个0X00,0X00才能成00.否则不行的. 00对底层来说是两个字符0X30,0X30.你自己可以增加一个转换机制,如果是小于0X10则加一个0
哦,谢谢
实现这个效果的算法,也不复杂,把一个字节拆分为2个字节:高4位和低4位,这个2个字节分别与10比较,并转换位相应的字符: unsigned char a; unsigned char buf[ 2 ]; a = 0x20;
buf[ 0 ] = ( a >> 4 ) & 0x0F; /* 高4位 */ buf[ 0 ] = ( buf[ 0 ] >= 10 ) ? ( buf[ 0 ] - 10 ) + 'A' : buf[ 0 ] + '0';
buf[ 1 ] = a & 0x0F; /* 低4位 */ buf[ 1 ] = ( buf[ 1 ] >= 10 ) ? ( buf[ 1 ] - 10 ) + 'A' : buf[ 1 ] + '0'; 把buf里面的内容写入文件就可以了