如何将数字转换为十进制字符串
How to convert number to decimal string?
大家好(新手在这里(,
我在嵌入式系统上工作,我需要将十六进制数转换为 ASCII 字符串。
请在回答之前阅读以了解我的要求。
例如,十六进制数 = 0xFF ASCII = 0x32 0x35 0x35
ASCII 字节表示十六进制数的十进制值。即0xFF是 255,0xFE将是 254,依此类推......
本质上,每个字节应生成 3 个字节用于十六进制数的十进制表示形式。
该值不是使用键盘输入的,它是从智能卡获得的值。
您可以使用 C 样式sprintf()
:
char buf[4];
sprintf(buf, "%03d", 0xFF & (unsigned)byte_to_convert);
您也可以使用 snprintf()
,当输出格式不固定时,这通常更安全,但对于此应用程序来说并不重要。
如果您的嵌入式环境无法承受从库中链接printf
系列函数的成本(它们可能相当大(,那么使用除法和模进行转换,如下所示:
char buf[4];
buf[3] = 0; /* NUL trminator */
buf[2] = (unsigned)byte_to_convert % 10 + '0';
buf[1] = (unsigned)byte_to_convert / 10 % 10 + '0';
buf[0] = (unsigned)byte_to_convert / 100 + '0';
如果有,请使用snprintf()
,或者sprintf()
.
假设该值是一个整数变量,请注意它不是一个"十六进制值";它只是一个变量中的一个数字。它不存储在计算机内存内的十六进制中。
像这样:
int hexNumber = 0xFF;
int i;
char ss[4];
sprintf(ss,"%d",hexNumber);
printf("0x%x: ",hexNumber);
for(i=0;i<3;i++)
printf("0x%x ",ss[i]);
printf("n");
这将产生:
0xff: 0x32 0x35 0x35
相关文章:
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 使用标准库计算字符串中的十进制数
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- 十进制到八进制递归C++.以标准::字符串格式输出
- 如何将带有浮点数的字符串转换为十进制?
- C++十进制到十六进制(字符串下标超出范围)
- 以C++格式将十六进制字符串转换为十进制数
- 将二进制字符串转换为十进制
- 使用堆栈将字符串格式的十进制转换为双精度
- 字符串到 Unicode,Unicode 到十进制码位 (C++)
- 如何使用C 将二进制数字的字符串转换为其签名的十进制表示
- C 如何将双重转换为字符串,因此它仅在十进制后显示2位数字
- C++:二进制标准::字符串到十进制
- 如何将数字转换为十进制字符串
- C++覆盖用户输入双倍为十进制字符串
- C++ 将十进制字符串拆分为两个整数
- 将十六进制二进制或十进制字符串转换为长整型字符串C++
- CRYPT_INTEGER_BLOB转换为十进制字符串
- Arduino:从两个十进制字符串中获取十六进制值
- 如何将十进制字符串转换为二进制字符串