資料通訊 大小端轉換

2021-10-10 08:30:07 字數 2160 閱讀 8357

記憶體位址

小端模式存放內容

大端模式存放內容

0x0000

0x78

0x12

0x0001

0x56

0x34

0x0002

0x34

0x56

0x0003

0x12

0x78

以0x12345678為例,可以看出。

大端,存放規則:12345678顯示規則:12345678

即低位址放高位,高位址放地位。

小端,存放規則:78563412顯示規則:12345678

即低位址放低位,高位址放高位。

big endian : powerpc 非nt、ibm、sun sparc、hp-pa unix、mips unix、rs/6000 unix、motorola m68k

little endian : powerpc nt、x86(intel、amd等)、dec alpha、hp-pa nt、mips nt、

其中arm的大小端是可選的,網路tcp/ip 是大端。

在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的int型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。

因此就導致了大端儲存模式和小端儲存模式。

大小端轉換一般用在跨平台通訊和資源共享上面,同乙個平台上面的開發,它們的資料存放規則和顯示規則是一致的,不需要考慮大小端相關問題。

仍然以0x12345678為例

小端到大端傳輸

如小端機器傳送的int型別是0x12345678,那麼資料的存放規則是 78 56 34 12

傳送的時候從低位址開始讀取,即傳送出去是0x12345678,實際上是78 56 34 12

然後大端機的顯示規則:0x78563412

這樣看來,結果需要轉換。

大端到小端傳輸

如大端機器傳送:int型別的0x12345678,存放規則:12 34 56 78

然後小端機的顯示規則:0x78563412

這樣看來,結果需要轉換。

大端到大端傳輸

如大端機器傳送:int型別的0x12345678,存放規則:12 34 56 78

然後大端機的顯示規則: 0x12345678

這樣看來,結果不需要轉換。

小端到小端傳輸

如小端機器傳送:int型別的0x12345678,存放規則:78 56 34 12

然後小端機的顯示規則:0x12345678

這樣看來,結果不需要轉換。

正如上面說的除了8bit的資料不需要進行資料轉換,它只對應著乙個位址單元,其餘的short、int、long等型別都需要進行大小端判斷。

最常見的就是聯合體判斷方法了,**如下:

bool isbigendian()  

num;

num.a = 0x12345678;

return ( num.b == 0x12 )

}

大小端轉換最有效也是最常見的方法就是移位法,如下:

#define __swp16(a)   (( ((uint16)(a) & 0xff00) >> 8)    | \  

(( (uint16)(a) & 0x00ff) << 8))

#define __swp32(a) ((( (uint32)(a) & 0xff000000) >> 24) | \

(( (uint32)(a) & 0x00ff0000) >> 8) | \

(( (uint32)(a) & 0x0000ff00) << 8) | \

(( (uint32)(a) & 0x000000ff) << 24))

最後,出於效率考慮,大小端應該在最開始的通訊過程中就要約定好,儘量減少系統資源的消耗。

Activity資料通訊

若要從子activity獲取返回資訊時,可呼叫以下activity方法 public void startactivityforresult intent intent,int requestcode 該方法的第乙個引數為intent,第二個引數是請求 請求碼是先傳送給子activity,然後再返回...

資料通訊基礎

通道的最高碼元傳輸速率 根據奈氏 nyquist 準則,理想碼元傳輸速率n 2w baud 其中w是理想低通訊道的頻寬,單位為hz,baud是波特,是碼元傳輸速度的單位。通道的極限資訊傳輸速率 shannon用資訊理論的理論推導出了頻寬受限且有高斯白雜訊干擾的通道的極限 無差錯的資訊傳輸速率。其中w...

資料通訊概述

基本概念的介紹 模擬通訊 頻分復用 數字通訊 時分復用 一則離散訊息包含的資訊量 i log ap i log a p i loga p 資料通訊 依照通訊協議,資料傳輸技術在兩個功能單元之間傳遞資料資訊 資料通訊業務 分組交換業務 數字資料業務 幀中繼業務 寬頻業務 資料通訊系統 資料終端裝置dt...