[英]Integer to hex in java giving very big value?
我實際上是從java套接字bufferedread讀取int值,然后轉換為十六進制表示形式。 我正在使用以下方法。
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(nextChar));
if (sb.length() < 2) {
sb.insert(0, '0'); //pad with leading zero if needed
}
String hexChar = sb.toString();
System.out.println("\n\n hex value is "+hexChar +" "+"Int value is:"+nextChar);
代碼工作正常。 只有我一個或兩個數據,在轉換成十六進制后的正常情況下,它們是BE或A9,但我卻得到ffdd,整數值為65533。這可能是我的轉換方法有誤還是輸入值是它本身具有那個值?
目前尚不清楚您要做什么,但是按照文檔中的定義,讀取的返回值是:讀取的字符,為0到65535(0x00-0xffff)范圍內的整數,如果結尾為-1,則返回-1。流已到達。
這當然是因為您正在使用文本閱讀器。
您可能需要閱讀此答案 。
好的,我知道了。
您以為自己正在讀取字節,但是由於使用的是BufferedReader,因此實際上可以讀取chars( char數據類型是單個16位Unicode字符。其最小值為'\\ u0000'(或0),最大值為'\\ uffff'(或65,535(含))。
我相信這就是您想要實現的目標。 請注意,這不是最佳方法,僅是示例!
InputStream is = sock.getInputStream()
BufferedInputStream bis = new BufferedInputStream(is);
int nextByte;
StringBuilder sb = new StringBuilder();
while( (nextByte = bis.read()) != -1 ) {
sb.append(String.format("%02X ", nextByte));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.