将UUID结构表示为char uuid [128]

时间:2013-09-26 12:18:28

标签: c char byte uuid

如果我有以下UUID结构:

typedef unsigned long   unsigned32;
typedef unsigned short  unsigned16;
typedef unsigned char   unsigned8;
typedef unsigned char   byte;

typedef struct {
    unsigned32  time_low;
    unsigned16  time_mid;
    unsigned16  time_hi_and_version;
    unsigned8   clock_seq_hi_and_reserved;
    unsigned8   clock_seq_low;
    byte        node[6];
} uuid_t;

是否有可能将其表示为char?如:

unsigned char uuid[128];

如果是这种情况,我将如何操纵像:

这样的值
uuid.time_low = htonl(uuid.time_low);                       //uuid[0...32]  = htonl(uuid[0...32])?
uuid.time_mid = htons(uuid.time_mid);                       //uuid[33...48] = htonl(uuid[33...48])?
uuid.time_hi_and_version = htons(uuid.time_hi_and_version); //uuid[49...64] = htonl(uuid[49...64])?

所以我的问题是,我如何在实际代码中实际实现以下示例:

uuid[0...32]  = htonl(uuid[0...32])

我是否在正确的轨道上?任何建议都非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,为了进行序列化,你的结构应该打包。

您可以使用某些预处理程序指令(如__attribute((packed)))来执行此操作,但这是特定于编译器的,并且您的代码将无法移植。

一旦确定结构已打包,就可以使用union来交换结构和char数组。