Re: [問題] endian

看板C_and_CPP (C/C++)作者 (非議)時間14年前 (2012/02/02 18:46), 編輯推噓3(305)
留言8則, 6人參與, 最新討論串3/4 (看更多)
※ 引述《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

02/02 18:52, , 1F
推一個 ^^
02/02 18:52, 1F

02/02 18:57, , 2F
恩...但這世界上不是只有Big和little(?)
02/02 18:57, 2F

02/02 18:59, , 3F
所以我用 else if 不是用 else XD
02/02 18:59, 3F

02/02 19:00, , 4F
事實上我當時還加了 else 就終止
02/02 19:00, 4F

02/02 19:00, , 5F
話說回來那隻程式也沒有在little以外的平台跑過就是了
02/02 19:00, 5F

02/02 19:30, , 6F
ww 感覺壓縮算法比較會碰到 之前寫RLE好像也有這個問題
02/02 19:30, 6F

02/02 23:02, , 7F
寫binary進檔案然後開hexEditor去檢查的時候也會用到XD
02/02 23:02, 7F

02/02 23:08, , 8F
以前用遊戲修改大師去改記憶體的時候就會用到 (喂)
02/02 23:08, 8F
文章代碼(AID): #1FAccDd2 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
1
3
完整討論串 (本文為第 3 之 4 篇):
1
7
3
8
1
3
4
18
文章代碼(AID): #1FAccDd2 (C_and_CPP)