Re: [問題] big endian <-> little endian 轉換
※ 引述《sean72 (.)》之銘言:
: 如果我的阿拉伯數字是 12
: 那寫成 big endian就是 0001 0010
: 網路上找到的方法
: inline void endian_swap(unsigned short& x)
: {
: x = (x>>8) |
: (x<<8);
: }
: 原本 0001 0010
: 0000 0000 0001 0010 (右移八位)
: OR 0001 0010 0000 0000 (左移八位)
: ______________________________________
: = 0001 0010 0000 0000 0001 0010 ?????
: 老實說我完全不懂
: 他並沒有出現 0010 0001
: 希望能幫麻詳解
: 非常感謝
你的第一句就有問題了...
12 的二進位是 1100.
我不知道你從那裡學來是一個一個數字拆開來搞.
(這種數字表示法有特別稱呼, 叫 packed decimal,
不過你現在的情況應該不是在搞這些...)
假設 short 是 2 byte 長.
12 big endian 就是
0000 0000 0000 1100
0000 0000 0000 0000 >> 8
0000 1100 0000 0000 << 8
-------------------------------------------
0000 1100 0000 0000
你順便去搞清楚 bitwise shift 意思吧. 你原文也搞錯了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.238.156.185
※ 編輯: adrianshum 來自: 61.238.156.185 (07/12 10:56)
→
07/12 10:57, , 1F
07/12 10:57, 1F
→
07/12 11:20, , 2F
07/12 11:20, 2F
→
07/12 11:49, , 3F
07/12 11:49, 3F
→
07/12 11:58, , 4F
07/12 11:58, 4F
→
07/12 15:56, , 5F
07/12 15:56, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):