在 C 中将 ASCII 数转换为十六进制
Convert Ascii number to Hex in C
我使用以下函数将十六进制的值转换为 ASCII:
void hex_to_ascii(unsigned char* buf, unsigned char number)
{
int i;
sprintf( buf, "%03d", number );
printf("nNumber in Ascii: ");
for( i=0; i< 3; i++)
printf("%#04x ", *(buf+i));
printf("n");
return;
}
例如,如果十六进制值0xff
则函数生成0x32 0x35 0x35
这是255
的 ASCII 表示。
现在我想反转操作。我想要一个可以传递三个字节(3 个数组(来生成十六进制值的函数。
即我们传递0x32 0x35 0x34
,它会产生0xFE.
你能帮我这个吗?它是针对嵌入式系统的,这些值不是类型化的,而是从通信缓冲区获得的。
非常感谢。
编辑:
我写了这个,它似乎有效..
unsigned char ascii_to_hex(unsigned char* buf)
{
unsigned char hundred, ten, unit, value;
hundred = (*buf-0x30)*100;
ten = (*(buf + 1)-0x30)*10;
unit = *(buf+2)-0x30;
value = (hundred + ten + unit);
printf("nValue: %#04x n", value);
return value;
}
感谢大家的回复。
您需要在 base10 中构建一个数字,考虑到您将所有数字存储在 char*buf
中,如下所示:
//assumtions: n - number of digits
// digits are ordered MSD first -> buff[0] contains the most significant digit.
for(i=0;i<n;i++)
{
number += buf[n-i-1]*pow(10,i); //number+=digit*10^i
}
printf("%xn", number);
您可以使用 stdlib 的 atoi(( 函数将字符串转换为整数:
char str[] = {0x32, 0x35, 0x34, 0x00};
int integer = atoi(str);
printf("%xn", integer);
然后你可以 printf(( 该整数作为十六进制/十进制或其他任何东西。如果这对于您的需求来说太简单了,那么更强大的替代方案是使用 sscanf((
如果您从通信缓冲区获取这些整数字符串,那么您可能希望先将缓冲区拆分为单独的数字(例如,它们可能用空格分隔(。在 C 语言中执行此操作的一种简单方法是使用 strtok((。
编辑:此编辑是为了响应您添加到问题中的代码。我不能评论你的问题,因为我没有足够的声誉!您添加的代码已损坏。仅当提供三位字符串(例如"001"、"255"(时,它才有效。如果提供了不同数量的数字,它将读取字符串末尾并产生垃圾输出,请尝试"1"或"14"或"12314"。
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 在Arduino中将字符串转换为(逗号分隔的十六进制)字符串到无符号字符数组
- 将 std::string( "x3BxDEx7C" ) 转换为可读的十六进制字符串?
- 将十六进制转换为 DEC
- C++ 将十六进制字符串表示形式转换为十六进制字符串表示形式
- 字符数组到十六进制字符串的转换 - 意外输出
- C++将 wwn 字符串转换为识别为十六进制的数据类型
- 将字符串存储为十六进制而不进行转换
- 将字符串转换为十六进制数组c++
- 十六进制到十进制转换的未清理答案
- 是否有函数或公式可以在 c++ 中将字符串"of letters"转换为十六进制
- C++十六进制字符串转换为十六进制的字符 *
- 转换十六进制并存储为字节