mio UUID è strutturato in questo modo:Come convertire UUID in big endian?
struct UUID_FIELDS
{
uint32_t time_low;
uint16_t time_mid;
uint16_t time_hi_and_version;
uint8_t clock_seq_hi_and_reserved;
uint8_t clock_seq_low;
uint8_t node[6];
};
Ho funzioni che swap
lungo 32 bit e confini di un swap function
che scambia lungo 16 bit confini. Ho provato a chiamare swap32()
su time_low
e swap16()
su time_mid
e time_hi_and_version
. Non credo di aver bisogno di scambiare byte per il resto dei campi perché due di loro sono campi a 8 bit e ho letto che la parte del nodo di un uuid non cambia. Here is a link for that reference.
Il problema è quando ho completato lo scambio il uuid che è stampato non corrisponde a quello che era in little endian prima di essere convertito.
Qual è il modo corretto per convertire un uuid seguente RFC-4122 standard di da little endian
a big endian
. E una volta convertiti, gli uuid dovrebbero combaciare?
vedere: [online hex conversion] (http://www.scadacore.com/field-applications/programming-calculators/online-hex-converter/) –
Se si è su un sistema little-endian e si riceve l'UUID come per lo standard RFC-4122 (rappresentazione big-endian) allora sì dovrete scambiare byte su 'time_low',' time_mid' e 'time_high_and_version' per usarli correttamente. – vu1p3n0x
@MohammadrezaPanahi si consiglia di specificare in che modo il sito di conversione può essere correlato alla domanda specifica dell'OP (e ben formulata, posso aggiungere). Un sito utile, certo, ma come aiuta a risolvere * questo * problema? – WhozCraig