十六进制以字符串模式直接输出
十六进制以字符串形式直接输出
我收到一个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 );
}
------解决方案--------------------
数值转化为字符串,就是多了个双引号,里面的内容不变,所以是“00”.
------解决方案--------------------
00 01 02 ab 2a 10 1f ff ff 00
每次取 每个 2字节 如 ab
取ab的低4位 得到a部分 取高4位得到b部分,查ascii表 a + 多少 == ascii的 ‘a’ (或者大写的),这样能快一些
我收到一个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 );
}
------解决方案--------------------
数值转化为字符串,就是多了个双引号,里面的内容不变,所以是“00”.
------解决方案--------------------
00 01 02 ab 2a 10 1f ff ff 00
每次取 每个 2字节 如 ab
取ab的低4位 得到a部分 取高4位得到b部分,查ascii表 a + 多少 == ascii的 ‘a’ (或者大写的),这样能快一些