c++ - 如何将数字转换为十进制字符串?

标签 c++ c ascii hex

大家好(这里是新手),

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

关于c++ - 如何将数字转换为十进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376272/

相关文章:

c - 在 C 中打印数组的随机元素

c - 在 C 中加载共享内存

c - 在 C 中使用 _Generic 类型在嵌套结构中进行函数重载

c++ - 读取 ASCII 以外的字符

c++ - 使用 boost::serialize 反序列化多个值(使用 SSCCE)

c++ - 在带有 https 的网站上使用 qt creator 获取一些值

c++ - 我可以使用什么容器来编写二进制文件?

c++ - Unresolved external 错误 - 使用 FTD2XX.h 的 Visual C++

ascii - 使用JAVACC识别扩展字符

c - 如何避免在c中打印ascii值?