簡體   English   中英

給java中的十六進制整數帶來很大的價值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM