如何将数字转换为十进制字符串

How to convert number to decimal string?

本文关键字:十进制 字符串 转换 数字      更新时间:2023-10-16

大家好(新手在这里(,

我在嵌入式系统上工作,我需要将十六进制数转换为 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