看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tropical72 (藍影)》之銘言: : 回個文整理一下。 : 先說結論,C 語言用到 big/little 的時機很少,除了幾道面試題、網路程式之外, : 沒見過。 bitwise operator 不需考慮 big/little。 (其餘恕刪) 討論一下我以前實務上曾經碰到要考慮endianness的一個case 假設有一份用 plain text 儲存的 IPv4 列表 文件內一行一個IP,例如長這樣 192.168.0.1 123.123.123.123 55.66.77.88 當時的需求是要做類似壓縮的處理 每個IP用4 bytes代表,以binary儲存 我當時的做法大概是這樣: 1. 先宣告 union UTransformer { unsigned int intdata; unsigned char chardata[4]; } trans; 2. 從 input 檔案把數字一個一個讀進來,例如 192, 168, 0, 1, 123, ... 3. 令 trans.intdata = 讀進來的數字 4. if big endian: 把 trans.outdata[3] 寫入 output 檔案 else if little endian: 把 trans.outdata[0] 寫入 output 檔案 我相信也許還有更高效的做法 不過只是提一下以前曾經碰到需要處理endianness的狀況而已 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.65.124
tropical72:推一個 ^^ 02/02 18:52
firejox:恩...但這世界上不是只有Big和little(?) 02/02 18:57
shadow0326:所以我用 else if 不是用 else XD 02/02 18:59
shadow0326:事實上我當時還加了 else 就終止 02/02 19:00
shadow0326:話說回來那隻程式也沒有在little以外的平台跑過就是了 02/02 19:00
eight0:ww 感覺壓縮算法比較會碰到 之前寫RLE好像也有這個問題 02/02 19:30
azureblaze:寫binary進檔案然後開hexEditor去檢查的時候也會用到XD 02/02 23:02
james732:以前用遊戲修改大師去改記憶體的時候就會用到 (喂) 02/02 23:08