假设我有这些变量,

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 (这仅仅是一个纯文本,像"你好"),以六和存入 ndef_msg?正如你可以看到 ndef_default_msg 是六角的形式。内部数据 ndef_msg 应该是这样的东西。

一点背景,在原来的程序(源代码),该计划将打开一个文件,得到的数据,并把它的内部 ndef_msg, ,然后将写入卡。但我不明白为何它可以采取数据并将其转换到hex。

我要简化程序,所以将直接要求用户对文本(而不是要求为一个文件)。

有帮助吗?

解决方案

为什么不直接将其读入ndef_msg(如果假定是纯数组,则减\ 0)。十六进制仅用于演示,您可以选择十进制或八进制而不会影响内容。 通用标签

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

其他提示

可能不是很优雅,但是很简单:定义一个查找表,该表将字符代码(0到255)映射为所需的值。 通用标签

我曾多次使用过这种非优雅的解决方案(例如用于颜色映射),并且其效果与其他高级解决方案一样好

如果我理解正确的,你读取数据的格式存储在六角 ndef_input,分析和保存价值 ndef_msg.

你可以使用

// parse the hex string and store it in an int variable
int temp_int;
sscanf(ndef_input, "%x", &temp_int);
// covert it to uint8_t type
ndef_msg = malloc(sizeof(uint8_t));
*ndef_msg = (uint8_t)temp_int;
通用标签

希望能对您有所帮助 通用标签

ascii2hex的定义如下: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top