Re: [問題] endian
※ 引述《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
02/02 18:57, 2F
→
02/02 18:59, , 3F
02/02 18:59, 3F
→
02/02 19:00, , 4F
02/02 19:00, 4F
→
02/02 19:00, , 5F
02/02 19:00, 5F
→
02/02 19:30, , 6F
02/02 19:30, 6F
推
02/02 23:02, , 7F
02/02 23:02, 7F
→
02/02 23:08, , 8F
02/02 23:08, 8F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章