Arrays memcpy不';我似乎没有复制正确的数据
我正在尝试将ipv6地址的字符串从一个变量复制到另一个变量中,但我得到了错误的值,我有:Arrays memcpy不';我似乎没有复制正确的数据,arrays,pointers,struct,memcpy,Arrays,Pointers,Struct,Memcpy,我正在尝试将ipv6地址的字符串从一个变量复制到另一个变量中,但我得到了错误的值,我有: #include <stdio.h> #include <string.h> typedef unsigned char bcm_ip6_t[16]; int main (void){ typedef struct { bcm_ip6_t IPv6addr; }mytype_t; bcm_ip6_t outarr; /****
#include <stdio.h>
#include <string.h>
typedef unsigned char bcm_ip6_t[16];
int main (void){
typedef struct {
bcm_ip6_t IPv6addr;
}mytype_t;
bcm_ip6_t outarr;
/****************/
mytype_t myvar[64];
strcpy(outarr,"001122334455667788");
printf("outarr %s\n",outarr);
memcpy(myvar[0].IPv6addr, outarr, 16);
printf("0x%x TEST0\n0x%x TEST1\n", myvar[0].IPv6addr[0], myvar[0].IPv6addr[1]);
return 0;
}
但我看到了:
outarr 001122334455667788
0x30 TEST0
0x30 TEST1
这是为什么?我如何解决
谢谢,
Ron您正在打印字符的ASCII值,而不是地址字节的二进制值。您将字符串复制到无符号字符数组中 然后打印出无符号字符数组的十六进制值 字符“0”由十六进制值0x30表示-这就是您看到它两次的原因
outarr 001122334455667788
0x30 TEST0
0x30 TEST1