如何将 char 数组转换为 uint8_t 并在 c 中打印它?

How to convert char array to uint8_t and print it in c?

提问人:sh.sagheb 提问时间:10/22/2022 更新时间:10/22/2022 访问量:110

问:

我有一个十进制数,我们已将其转换为十六进制并存储在十六进制数组中。之后,我在这个数字上添加了一个“0x”(实际上是 char 数组)。现在我想将这个十六进制数(在 char 数组中)转换为 Uint8_t然后打印出来。第一个问题是如何进行这种转换,第二个问题是在打印过程中,应该使用哪种打印格式(%02x、%d、%s 和 ...)?

c char clang uint8t

评论

1赞 Paul Hankin 10/22/2022
目前尚不清楚你到底在问什么。什么是“十六进制阵列”?“将 0x 添加到这个数字(实际上是 char 数组)”是什么意思?“将 char 数组转换为 uint8_t”是什么意思?目标是什么 - 以不同的形式表示数据,打印数据,或两者兼而有之?您能否包含已编写的代码以及给定输入的所需输出?
0赞 Andreas Wenzel 10/22/2022
目前尚不清楚什么是“十六进制阵列”。你的意思是这样的吗?如果是这种情况,请编辑问题以提供示例。这将使您的问题更清晰。char array[] = "0xA5";
0赞 Weather Vane 10/22/2022
至于第二个问题,你忘了说你想要什么输出。
0赞 stark 10/22/2022
通过调用 strtol 转换十六进制字符。使用您需要的任何输出基座进行打印。
0赞 sh.sagheb 10/23/2022
@PaulHankin 简而言之,我目前在代码中有一个包含“0x8A”值的 char 数组(8A 只是一个例子)。现在我想将其转换为uint8_t类型,以便,例如,我在具有 uint8_t 类型的变量中具有 0x8A 形式的值。

答:

1赞 Weather Vane 10/22/2022 #1

此示例将十六进制字符串转换为整数:

#include <stdio.h>
    
int main(void)
{
    int val;
    char str[] = "0x12";
    int res = sscanf(str, "%i", &val);
    printf("res=%d val=%d\n", res, val);
}

程序输出

res=1 val=18

该格式在函数系列中用于接受十进制、八进制(前导 0)或十六进制(前导 0x)的输入。如果您只想接受十进制,请使用 或 .%iscanf%d%u