• 8076阅读
  • 3回复

QT中位运算出现奇怪问题~ [复制链接]

上一主题 下一主题
离线naga1003
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-15
是这样的,我有个数ushort i=07D9(10进制的2009)
我把它拆成了高位byte j=07,低位byte k=D9
現在我想通过位运算把它还原回去,却怎么都不能成功,我尝试这样做:

ushort n=(j<<8)|(k) //結果n=ffD9

ushort n=(j<<9)+(k)//結果n=06D9

同樣的代碼我在windows里運行沒有任何问题啊,为什么拿到QT里就還原不回去了呢?????

ps:我打印了(j<<8)結果是0700;打印了k,结果是D9这些结果都正确啊,是在是搞糊涂了~~
离线dbzhang800

只看该作者 1楼 发表于: 2009-10-15
估计 你的 byte  是 char 的别名

char 一共就8 位,你再左移8位,数据变成啥了??

Qt中的 ushort 就是 unsigned short, 你确定你所谓windows里没有任何问题?

另外你的Qt程序不在windows下? 用的哪个平台的哪个编译器呢?
离线naga1003
只看该作者 2楼 发表于: 2009-10-15
先谢谢回复,问题已解决
左移8位没问题,它自动变成ushort了
windows里沒問題,我的問題是出在低位byte k=D9轉換成ushort的時候高位linux里用1補齊,而windows里用的0

我qt程序時linux下的,編譯器gcc
离线foxyz

只看该作者 3楼 发表于: 2009-10-15
不同的操作系统,不一样的。

我的solaris是64位的,你的windows是32bit的,有些操作比如:变成FF90就是因为前边补位造成的。
快速回复
限100 字节
 
上一个 下一个