求助字节读写模式一个小问题!!

我的程序是这样 一个保存时间的数组unsigned char table[5]={0x08,0x11,0x24,0x12,0x50,0x45} 即08年11月24日12时50分45秒 然后把这个数组复制到mCmdParam.ByteWrite.mByteBuffer[i]中 for(i=0;i<6;i++) { mCmdParam.ByteWrite.mByteBuffer[i]=table[i]; } mCmdParam.ByteWrite.mByteCount = i; i = CH375ByteWrite( ); mStopIfError( i ); mCmdParam.ByteWrite.mByteCount = 0; CH375ByteWrite( );

然后用电脑看U盘,全是乱码,请问这是怎么回事啊??? 我把table[6]中的内容改成{J,J,J,J,J,J}后,就能正常显示出JJJJJJ

如果你新建的文件是.TXT文件的话,那么这个在文件打开的时候就是乱码,你应该按照ASCII码的形式写进去才能正常显示,例如显示1就需要写0X31


那也就是说我用两个字节的buffer才能显示两个数字呗?比如我要显示01,就要写0x30和0x31到buffer中??


理解正确!


那请问能不能帮个忙,提供一段程序 就是把我说的时间数组table[6]所保存的数据,复制到mCmdParam.ByteWrite.mByteBuffer并正确显示出来呢


基本流程是这样的:从table取出一个数,把这个数分成2部分:高4位和低4位,分别转换为字符即可: k = 0; for( i = 0; i < sizeof( table ); i ++ ) { a = ( table[ i ] >> 4 ) & 0x0F; /* 高4位 */ a = ( a < 10 ) ? ( a + '0' ) : ( a - 0x0A + 'A' ); mCmdParam.ByteWrite.mByteBuffer[ k ] = a; k ++; a = table[ i ] & 0x0F; /* 低4位 */ a = ( a < 10 ) ? ( a + '0' ) : ( a - 0x0A + 'A' ); mCmdParam.ByteWrite.mByteBuffer[ k ] = a; k ++; }


谢谢,请问用sprintf可以实现么? 比如sprintf( mCmdParam.ByteWrite.mByteBuffer, "现在时间为:%d \xd\xa", table[6] );


您提供的程序执行起来太慢了,6个数要存半天,有没有快一点的办法啊


没人能回答一下么??很着急啊


可以使用 sprintf( mCmdParam.ByteWrite.mByteBuffer, "现在时间为:%d \xd\xa", table[6] ); 把数据复制到缓冲区当中去


不好用啊,我写了个实验程序 UINT8 a1[] = {21,22,23,24,25,26,27}; i=sprintf( mCmdParam.ByteWrite.mByteBuffer, "现在时间为:%d \xd\xa", a1[7] ); mCmdParam.ByteWrite.mByteCount = i; CH375ByteWrite( ); mCmdParam.ByteWrite.mByteCount = 0; CH375ByteWrite( ); 将U盘拿下来一看,我写进去的是 "现在时间为:31744 " 唉,弄了一天也没弄明白,有高手帮忙解决一下么?


1.你的数组里面没有a1[7]这个数 2.i=sprintf( mCmdParam.ByteWrite.mByteBuffer, "现在时间为:%d \xd\xa", (unsigned short)a1[0] );


恩,我明白你的意思,不过我是想把a1这个数组中的6个数,全部都复制到 mCmdParam.ByteWrite.mByteBuffer中去 用sprintf只能一次复制一个,我想问的是怎么能一次搞定???


用这个函数memcpy(); memcpy(mCmdParam.ByteWrite.mByteBuffer,a1,sizeof (a1))


只有登录才能回复,可以选择微信账号登录