簡體   English   中英

如何在C ++中反轉十六進制的順序

[英]How can i reverse the order of hex in c++

首先,我有一個存儲數據的char array

unsigned char dat[3];

memset(dat, 0, sizeof(dat));                    
memcpy(dat, &no, 2);

當我檢查dat時,它包含一個0xfd 0x01的十六進制,因為no的值為509,該十六進制應為0x01 0xfd

我想知道我是否應該關心十六進制的順序,是否應該更改順序。 非常感謝

您的系統是小端的。 它與硬件有關,在小端字節序平台上,第一個字節作為多字節值的一部分時,是最低有效位。 查找: https : //en.wikipedia.org/wiki/Endianness

本質上,如果CPU是低位字節序,則值0x12345689將表示為以0x89開頭的字節集。 在大字節序上,它是相反的順序;在混合字節序上,它可能在運行時發生變化。

問題實際上是您接下來要做什么? 在您當前的硬件(Little Endian)上,這是系統如何對數字字節進行排序的方式。 最低有效字節在前:0xfd 0x01。

如果出於任何原因您真的想交換此字節順序,請簽出: 如何在C ++中的大端值和小端值之間轉換?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM