2014-02-06 67 views
2

我目前正在嘗試編寫一個在java中的MODbus的串行實現。我遇到的主要問題是,當我聲明一個字節(或簡稱爲0xC4)(對於一個字節)時,我得到一個「丟失精度錯誤」。Java中聲明字節的精度可能會丟失

圍繞這個有什麼特點嗎?還是我不得不把所有的數字類型,比如他們的1位縮短,然後他們真的是(阿拉7位,15位,31位,63位)?

而且例如:

byte[] test = 
    { 
     0x11, 
     0x02, 
     0x00, 
     0xC4, 
     0x00, 
     0x16 
    }; 

這將引發對0xC4警告說, 「可能的精度損失」 要求的字節,發現INT。

+1

顯示了一小段代碼,你在哪裏得到更新,以顯示例如警告 – AlexWien

+1

。 – Valarauca

回答

2

當你說0xC4,這是一個大於maximum value for a byte, 127的整數字面值,所以你必須明確地將它轉換爲byte

嘗試

byte[] test = 
{ 
    0x11, 
    0x02, 
    0x00, 
    (byte) 0xC4, 
    0x00, 
    0x16 
};