看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《pilipalabon (說好的性福呢?)》之銘言: 老實說小弟我實在不太懂您的問題, 直接回文好了.... : 假設今天我有一筆資料為 : ULong x = 0xe8a105f4 : UShort x1 = (UShort)x; : UShort x2 = (x>>16); : x1 == 0x5f4; //low : x2 == ffffe8a1; //high 以這個case來說, x = 0xE8A105F4 那低位元16 bits x1 = 0x05F4 高位元16 bits x2 = 0xE8A1 如果你的ULong與UShort有正確的typedef成unsigned的型態.... 應該不至於出現x2 = 0xFFFFE8A1這個結果出來才對.... 而且這個結果的bit count就不對了吧@_@" : 我在使用 UShort x2 = (x>>16) & 0x0000FFFF; : 依然不行.. : 但我用 : printf("%x\n", x2 & 0x0000FFFF); : 這樣x2 == e8a1 小弟剛拿DevC++試了一下上面兩個都OK的啊....@_@" : 請問要如何才能取到高位址呢? 謝謝 您要不要check一下ULong與UShort的define?? 再不然有其他相關的code嗎@_@" == PS. 在不同大小'印弟安'的情況下結果可能就有差了.... 但是, 最多是對應16 bits內資料順序不同.... 再怎麼樣也不會有個FFFF在前面才對啊@_@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.41.4 ※ 編輯: VictorTom 來自: 220.134.41.4 (10/26 18:47)
VictorTom:endian~~小弟我老是不記得怎麼拼....XD 10/26 18:49