[英]C memcpy unsigned char to 1 element unsigned char array for checksum calculation
There is a char array ACKbuffer[2]
so I first cast to unsigned char
the element that I want but it's giving me an error when I try to memcpy
it to an unsigned char
array.有一个字符数组ACKbuffer[2]
所以我先转换为unsigned char
元素,我想,但它给我一个错误,当我尝试memcpy
它的unsigned char
数组。
//first element is checksum
unsigned char ack_csum;
ack_csum = (unsigned char)ACKbuffer[0];
//second element is ACK which needs to be run through checksum
//in a checksum function that accepts unsigned char array as parameter
unsigned char ACK_actual = (unsigned char)ACKbuffer[1];
unsigned char ACK [1];
memcpy(ACK, ACK_actual, 1);
Error:错误:
note: expected ‘const void * restrict’ but argument is of type ‘unsigned char’
extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
^~~~~~
swap_client.c: In function ‘swap_write’:
swap_client.c:185:17: warning: passing argument 2 of ‘memcpy’ makes pointer from integer without a cast [-Wint-conversion]
memcpy(ACK, ACK_actual, 1);
I also tried another way but I get invalid initializer
:我也尝试了另一种方式,但我得到了invalid initializer
:
unsigned char ACK_actual = (unsigned char)ACKbuffer[1];
unsigned char ACK [1] = ACK_actual;
Ideally, I want my ACK
array to hold that value from ACKbuffer
.理想情况下,我希望我的ACK
数组保存来自ACKbuffer
值。
In this call of memcpy在这个 memcpy 调用中
memcpy(ACK, ACK_actual, 1);
the variable ACK_actual has the type unsigned char变量 ACK_actual 的类型为 unsigned char
unsigned char ACK_actual = (unsigned char)ACKbuffer[1];
but the function expects a pointer type.但该函数需要一个指针类型。
Just write写就好了
memcpy(ACK, ACKbuffer + 1, 1);
As for the second code snippet then you should write至于第二个代码片段,那么你应该写
unsigned char ACK_actual = (unsigned char)ACKbuffer[1];
unsigned char ACK [1] = { ACK_actual };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.