3
使用SMPP協議我使用long
表示system_id
字段的類型unsigned int
(4字節)的值。在協議本身中,字段值以十六進制格式指定。 所以我想保存在我的代碼中。雖然試圖比較變量值我寫道:我能以某種方式使用0x表示法
long id = ...;
//...
if(id == 0x80000009){...}
並且發現了Java的解釋0x80000009
爲int
,這是簽署4字節整型,所以溢出發生和比較失敗:
id == 2147483657
0x80000009 ==-2147483639
然後我嘗試了顯式類型轉換,即id == (long)0x80000009
- 結果相同。 然後,我聲明如下變量:
static final long bind_transceiver_resp = 0x80000009;
但它仍然是一個溢出int
值。
那麼有沒有辦法使用0x
表示法的值大於Integer.MAX_VALUE
?
非常感謝...我也非常感謝一個鏈接到更廣泛的描述可能的文字用法 – horgh
也許這頁在http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html將滿足您的需求(雖然我很驚訝它不提八進制)。 –