gpt4 book ai didi

c - 如何将 char 转换为以 uint8_t 形式存储的 hex?

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:25 26 4
gpt4 key购买 nike

假设我有这些变量,

const uint8_t ndef_default_msg[33] = {
0xd1, 0x02, 0x1c, 0x53, 0x70, 0x91, 0x01, 0x09,
0x54, 0x02, 0x65, 0x6e, 0x4c, 0x69, 0x62, 0x6e,
0x66, 0x63, 0x51, 0x01, 0x0b, 0x55, 0x03, 0x6c,
0x69, 0x62, 0x6e, 0x66, 0x63, 0x2e, 0x6f, 0x72,
0x67
};
uint8_t *ndef_msg;
char *ndef_input = NULL;

如何将 ndef_input(只是一个纯文本,如“hello”)转换为十六进制并保存到 ndef_msg 中?如您所见,ndef_default_msg 是十六进制形式。 ndef_msg 中的数据也应该是这样的。

一点背景,在原来的程序(source code)中,程序会打开一个文件,获取数据并将其放入ndef_msg中,然后将其写入卡中。但我不明白它如何获取数据并将其转换为十六进制。

我想简化程序,让它直接询问用户输入文本(而不是询问文件)。

最佳答案

为什么不直接将它读入 ndef_msg,(如果它假设是一个纯数组,则减去\0)。十六进制仅用于表示,您可以选择十进制或八进制而不影响内容。

void print_hex(uint8_t *s, size_t len) {
for(int i = 0; i < len; i++) {
printf("0x%02x, ", s[i]);
}
printf("\n");
}

int main()
{
uint8_t ndef_msg[34] = {0};

scanf("%33s", ndef_msg);
print_hex(ndef_msg, strlen((char*)ndef_msg));


return 0;
}

您可能需要以不同方式处理字符串的读取以允许空格,也许忽略\0,这只是为了说明我的观点。

关于c - 如何将 char 转换为以 uint8_t 形式存储的 hex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com