再次麻煩大家了,如果我定義一個(gè)數(shù)組AA[2]={0X20,0X00};想把這個(gè)數(shù)組原原本本的輸出到.txt文本中,怎么做呢?我試驗(yàn)的結(jié)果總是:20 0 而我想要的結(jié)果是20 00 說白了就是怎么才能把0x00輸出成00呢,謝謝!!
帖子排列有點(diǎn)問題,沒怎么明白. 如果你想寫成00的話,必須寫兩個(gè)0X30,底層是ANSIC碼
謝謝回復(fù),再具體點(diǎn)就是 定義:AA[2]={0X20,0X00}; 調(diào)用時(shí):len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%x\xd\xa", AA[i] ); 輸出為:20 0 但是我想要的結(jié)果是: 20 00
上面打錯(cuò)了:
調(diào)用時(shí):len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%x\xd\xa", AA[i] );//循環(huán)調(diào)2次。
"%x\xd\xa", 0x00肯定會(huì)被認(rèn)為是0的.除非你寫成兩個(gè)0X00,0X00才能成00.否則不行的. 00對(duì)底層來說是兩個(gè)字符0X30,0X30.你自己可以增加一個(gè)轉(zhuǎn)換機(jī)制,如果是小于0X10則加一個(gè)0
哦,謝謝
實(shí)現(xiàn)這個(gè)效果的算法,也不復(fù)雜,把一個(gè)字節(jié)拆分為2個(gè)字節(jié):高4位和低4位,這個(gè)2個(gè)字節(jié)分別與10比較,并轉(zhuǎn)換位相應(yīng)的字符: 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里面的內(nèi)容寫入文件就可以了