c如何使用memcpy将十六进制值复制到数组中

时间:2014-11-12 18:18:22

标签: c

我正在使用C,我有uint8_t array hex个值,我想通过memcpy动态添加另一个值。

我有一个数组:uint8_t sample['0x23', '0x34',...] e.t.c. ...我想稍后将Hex character复制到array。这是怎么做到的?如果之前已经回答过这个问题,抱歉,我找不到了。我是C的新手,这些pointers给了我地狱。提前谢谢。

2 个答案:

答案 0 :(得分:1)

你可以写简单

sample[4] = '\x0A';

如果你想使用memcpy,那么有效代码将是

memcpy( &sample[4], "\x0A", 1 );

memcpy( sample + 4, "\x0A", 1 );

那就是你需要使用字符串文字而不是字符常量。

答案 1 :(得分:0)

我想知道真正被问到的是如何在数组的末尾添加新值。

在C中,没有“数组”类,因此您必须自己管理内存和关联指针,或使用预先定义的函数库来完成所有操作。让我们假设前者,即程序员自己进行管理。

在将新值分配或复制到阵列之前,您需要确保有足够的空间。管理此方法的一种方法如下:

int     array_size = 10;
uint8_t sample[array_size];
uint8_t i = 4;    /* assuming array index cannot exceed 255 */

if (i < array_size) {
    sample[i] = 0x0a;
}

这里的关键是你的样本数组只占用10个字节的内存,你需要确保你对样本数组的访问不会超出那个范围。

如果确实希望将值附加到数组的末尾,则必须添加另一个变量以跟踪最后一个插入点/索引,并在示例中将其用于i