看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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)
angleevil:<m.m>謝謝 07/12 10:57
firejox:可能那是16進位的12 XD 07/12 11:20
sean72:了解 謝謝 07/12 11:49
sean72:你提醒之後我才發現我發文時候把阿拉伯數字和hex弄混了 07/12 11:58
adrianshum:那麼其實你想說的數字其實是 18 (0x12) ? 07/12 15:56