2013-09-26 11 views
1

Если у меня есть следующие UUID-структуру:Представляя UUID-структуру как символ UUID [128]

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; 

было бы возможно представить его как полукокса? Такие, как:

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]) 

Есть ли я на правильном пути? Любые предложения действительно оценены!

ответ

0

Прежде всего, для этой сериализации ваша структура должна быть упакована.

Вы можете сделать это, используя некоторую директиву препроцессора, такую ​​как __attribute((packed)), но это особый компилятор, и ваш код не будет переносимым.

Как только вы уверены, что ваша структура упакована, вы можете использовать union для обмена структурой и массивом символов.

+0

Я не понимаю, что вы имеете в виду – TomSelleck

Смежные вопросы