在通訊程序中接收到四個位元組的IC卡內號,把它轉換成Java的int型別,因為沒有Java沒有無符號整數型別,有時候會有負數印在卡上會很難看,只有把它轉換為long型別,遇到這樣的問題,看了很多類似的貼子,常規的方法:
int i=-9; //0xFFFFFFF7 十進制:4294967287
long l1 = i&Integer.MAX_VALUE; //0x7FFF FFF7 十進制:2147483639
以上這個方法只是去除了符號位,并不是把原來的資料轉換成無符號數,誤導了很多人。正確的方法應該是:
int i=-9;
long l1 = Long.valueOf(Integer.toHexString(i).toUpperCase(),16); //0xFFFFFFF7 十進制:4294967287
這個方法得到的才是真正的無符號整數值。
uj5u.com熱心網友回復:
應該發布博客而不是帖子uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244860.html
標籤:Java SE
上一篇:新手求助
