我有一个结构:
//GUID structure
typedef struct {
var8 octet[16];
} GPTGUID_t;
和一个很长的#define 为:
#define PTYPE_MRP_UPPER 0x4db80b5ce3c9e316ULL
#define PTYPE_MRP_LOWER 0xae1502f02df97d81ULL
我希望在八位字节 0 到 7 中复制 UPPER 部分,在 8 到 15 中复制 LOWER 部分。不幸的是,包括 memcpy 在内的所有尝试都失败并给出了段错误。
我尝试了一些方法:
strcpy(guid.octet[0], PTYPE_MRP_UPPER);
strcpy(guid.octet[8], PTYPE_MRP_LOWER);
并且,
memcpy(guid.octet[0], PTYPE_MRP_UPPER, sizeof(PTYPE_MRP_UPPER));
memcpy(guid.octet[8], PTYPE_MRP_LOWER, sizeof(PTYPE_MRP_LOWER));
两者都失败了。
顺便说一句:
typedef unsigned char var8;
typedef unsigned short var16;
typedef unsigned int var32;
但是,我能够将单个八位组提取为:
memcpy( guid.octet, pHdr->partTypeGUID, sizeof(GPTGUID_t));//copy the partitionTypeGUID
p1 = getvar64(guid.octet[0]);
p2 = getvar64(guid.octet[8]);
在哪里,#define getvar64(x) (*(var64*)(&x))