Re: [問題] big endian <-> little endian 轉換

看板C_and_CPP作者 (Alien)時間14年前 (2011/07/12 02:55), 編輯推噓0(005)
留言5則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《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
<m.m>謝謝
07/12 10:57, 1F

07/12 11:20, , 2F
可能那是16進位的12 XD
07/12 11:20, 2F

07/12 11:49, , 3F
了解 謝謝
07/12 11:49, 3F

07/12 11:58, , 4F
你提醒之後我才發現我發文時候把阿拉伯數字和hex弄混了
07/12 11:58, 4F

07/12 15:56, , 5F
那麼其實你想說的數字其實是 18 (0x12) ?
07/12 15:56, 5F
文章代碼(AID): #1E6xUebo (C_and_CPP)
文章代碼(AID): #1E6xUebo (C_and_CPP)