Java將字節(jié)數(shù)組打印為字符串,整數(shù)轉(zhuǎn)16進(jìn)制字符串

在進(jìn)行私有協(xié)議開發(fā)時(shí),有時(shí)候需要將一個(gè)整數(shù)轉(zhuǎn)換為16進(jìn)制的字符串打印出來,方便觀察調(diào)試。

這里有幾種方案,

1. 使用java原生

java中,可以使用biginteger來進(jìn)行轉(zhuǎn)換, 代碼如下



? public static void main(String[] args) {

? ? ? ? BigInteger bigInteger = new BigInteger("231231");? // output: 3873f

? ? ? ? System.out.println(bigInteger.toString(16));

? ? }


這種方案輸出就可以輸出16進(jìn)制字符串了 ,唯一不足的是,輸出的字節(jié)不能填充補(bǔ)零,不能按照字節(jié)進(jìn)行隔開;比如輸出: 03,87,3f。 這樣是不是更爽

但是java原生的是有符號(hào)數(shù)處理機(jī)制,如果遇到輸出字節(jié)數(shù)組時(shí),記得最高位是符號(hào)位喔。

2. 使用第三方工具包

使用magic-byte,里面提供了打印的功能,方便調(diào)試。另外magic-byte也支持直接序列化java對(duì)象到字節(jié)數(shù)組。 免去了手動(dòng)解析的繁瑣。

引入:



<dependency>

? <groupId>io.github.misterchangray</groupId>

? <artifactId>magic-byte</artifactId>

? <version>2.2.0</version>

</dependency>

? public static void main(String[] args) {

? ? ? ? ? // 將 123123 按照 16進(jìn)制輸出, 每個(gè)字節(jié)間使用 逗號(hào)隔開

? ? ? ? System.out.println( ConverterUtil.prettyPrintByteArray(123123, 16, ","));

? ? }

```


另外附上框架github地址

[magic-byte框架地址](https://github.com/MisterChangRay/magic-byte)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容