【发布时间】:2018-06-06 15:12:34
【问题描述】:
我给了一个数字,例如 n = 10,我想用大端序计算它的十六进制长度,并将它保存在一个 8 字节的字符指针中。在此示例中,我想获取以下字符串:
“\x00\x00\x00\x00\x00\x00\x00\x50”。
如何使用例如 sprintf 在 C 中自动执行此操作?
我什至无法在 char 指针中获得“\x50”:
char tmp[1];
sprintf(tmp, "\x%x", 50); // version 1
sprintf(tmp, "\\x%x", 50); // version 2
版本 1 和 2 不起作用。
【问题讨论】:
-
十六进制的十进制 50 是 0x32,所以我不知道你为什么期望它是 0x50...
-
char tmp[1];=> 对于任何 1 大小的 nul 终止字符串来说都太短了 -
我想用十六进制计算十进制 n=10,即 0x50,我想用 sprintf 将它保存在一个字符指针中,这样字符串就是“\x50”。字符 tmp[2]; sprintf(tmp, "\\x%x", 50); tmp[1] = 0;也不行。
-
十进制 10 不是十六进制 50:它是十六进制 0A。 50 是十六进制 32。
-
char tmp[2]仍然太短。它只能存储1个字符的字符串