我正在研究一個程序,該程序採用unicode字符的十六進制值並將其轉換爲整數,然後轉換爲字節數組,然後轉換爲UTF-8字符串。除了例如十進制值E2 82 AC(€符號)爲14 844 588這一事實外,所有情況都沒有問題,但如果您在下面提供的網頁上查看它的代碼點值,則它是226 130 172,這是一個很大的差異。UTF8十六進制代碼點到十進制不匹配
http://utf8-chartable.de/unicode-utf8-table.pl?start=8320&number=128&names=-
如果他們用十進制值進行排序,他們不只是轉換十六進制到十進制。顯然,我不明白編碼以及我以爲我做的。
E2 82 AC映射到226 130 172,而不是14 844 588
爲什麼這種差異?
在此先感謝。
您無法直接將可變長度字節序列解釋爲數字。 0x00E282AC確實是14844588,但這只是巧合。 – tripleee
十六進制中的字節序列「0xE2」0x82「0xAC」分別是「226」,「130」,「172」。單個數字'14,844,588'(請注意逗號,它們只是您問題中的空格)是十六進制的「0xE282AC」。十進制數是「226」,「130」,「172」而不是「226,130,172」。你正在比較兩種不同的東西。你讓空間混淆你。 –