十六进制以字符串模式直接输出

十六进制以字符串形式直接输出
我收到一个16进制的 消息,比如“00 01 02 ab 2a 10 1f ff ff 00”,
我想让它在控件上直接显示 “00 01 02 ab 2a 10 1f ff ff 00”。如果把16进制转换成字符串,就会显示空格与一些乱码。

------解决方案--------------------
#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char buffer[20];
   int  i = 3445;
   long l = -344115L;
   unsigned long ul = 1234567890UL;

   _itoa( i, buffer, 10 );
   printf( "String of integer %d (radix 10): %s\n", i, buffer );
   _itoa( i, buffer, 16 );
   printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
   _itoa( i, buffer, 2  );
   printf( "String of integer %d (radix 2): %s\n", i, buffer );

   _ltoa( l, buffer, 16 );
   printf( "String of long int %ld (radix 16): 0x%s\n", l, 
                                                    buffer );

   _ultoa( ul, buffer, 16 );
   printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
                                                    buffer );
}


------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

你把每个十六进制format为字符串,再合并。


可是接收的消息很大的时候呢   几百个字节的话,不可能一个一个列出来的

你收到的消息是十六进制的,也有空格?


16进制的00转换成字符串是什么?

数值转化为字符串,就是多了个双引号,里面的内容不变,所以是“00”.
------解决方案--------------------
00 01 02 ab 2a 10 1f ff ff 00

每次取 每个 2字节 如 ab  
取ab的低4位 得到a部分 取高4位得到b部分,查ascii表  a + 多少 == ascii的 ‘a’ (或者大写的),这样能快一些