簡體   English   中英

為什么Java和Javascript中的字節數組表示形式不同?

[英]Why different byte array representation in Java and Javascript?

我試圖同時在Java和Javascript中看到U的UTF-8字節。

在Javascript中,

new TextEncoder().encode("👍"); 返回=> [240, 159, 145, 141]

在Java中

"👍".getBytes("UTF-8")返回=> [-16, -97, -111, -115]

我使用與語言( JSJava )相對應的方法將這些字節數組轉換為十六進制字符串,並且均返回F09F918D

實際上, -16 & 0xFF = = 240

我很好奇有關為什么兩種語言選擇不同的方式表示字節數組的信息。 我花了一段時間才弄清楚這一點。

在Java中,所有字節均已簽名。 因此,一個字節的范圍是從-128到127。但是,在Javascript中,返回的值只是簡單地講整數。 因此可以使用小數點表示,最大范圍為255。

因此,如果將兩個結果都轉換為1字節的十六進制表示形式,則它們將是相同的: F0 9F 91 8D

說到Java 為什么決定消除無符號類型,那是另外一個討論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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