将 memcpy 与十六进制值一起使用

Using memcpy with hex values

我可以

memcpy(buffer, "[=10=]", 1);

但是我做不到

memcpy(buffer, 0x0, 1);

它会导致分段错误。

有没有一种方法可以在没有字符串表示的情况下将十六进制值与 memcpy 一起使用?

memcpy 接受两个指针。 "[=12=]" 是一个指向字符串的指针。 0x0 解释为指针是 NULL,在大多数平台上读取和写入是非法的。

重写第二个示例的正确方法是使用指针:

int x = 0x0;
memcpy(buffer, &x, 1);

这些是非常不同的东西。

第一个

memcpy(buffer, "[=10=]", 1);

将文字字符串 "[=13=]" 的 1 个字符复制到 buffer.

第二个

memcpy(buffer, 0x0, 1);

尝试从 0 复制一个字节。这与

相同
memcpy(buffer, NULL, 1);