我發現自己最近擺弄了Modbus over IP,其中數據被存儲並傳輸到16位寄存器中。 要編碼大於16位的數據類型(例如32位浮點數),通常的方法是將32位值分成兩個連續的16位寄存器(一對)。該標準的一些實現者選擇將最重要的16位放在該對的第一個地址中,而其他一些則選擇將其置於第二位。 這兩種方法有時分別稱爲Big Endian和Little Endian。什麼是endianess的正確定義?
起初我對這個措辭有點誤導,因爲CS教科書通常指出,字節順序與字節順序有關。這也體現在某些庫函數處理字節順序的方式上:例如Python的struct.unpack庫通過交換字節順序來解開小端和大端值。
然而,對於這種特定的應用(即Modbus),字節順序確實是指連續的16位寄存器(也稱爲字順序)的順序。
那麼,endianess的正確定義是什麼? 它是否嚴格適用於字節順序或任何其他大小的值被分割的塊?
感謝, 再見, 馬爾科
字節,單詞?不,「endianness」是關於煮雞蛋開裂的起點。順便說一句,維基說:「有些舊的ARM處理器具有一半的小端,一半的大端浮點數表示,用於雙精度數字:這兩個32位字都存儲在小端,如整數寄存器,但最重要的第一個。「 –