→ VictorTom:endian~~小弟我老是不記得怎麼拼....XD 10/26 18:49
※ 引述《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)