在Java中,如何解释字符串的UTF-8字节?

时间:2018-11-28 15:12:56

标签: java utf-8 byte

对Java byte类型进行了签名,范围为-128至127(含)。这是多么糟糕的设计!

现在,我想获取Java String的UTF-8表示形式。据我了解,UTF-8表示形式是无符号字节序列(范围从0到255,包括0和255)。 Java中的String类提供以下方法,该方法似乎能够提供String的UTF-8表示形式:

byte[] getBytes(String charsetName)

但是,如您所见,此方法返回Java byte类型的数组。那么,我应该如何解释这个数组?

例如,如果sString,并且bArrays.getBytes("UTF-8")的返回数组,则:

  1. 如果bArray[0]为-100,那么此UTF-8表示形式的第一个无符号字节(在0到255之间)是什么?

  2. 如果此UTF-8表示形式的第一个无符号字节(范围为0到255)为200,那么bArray[0]是什么?

1 个答案:

答案 0 :(得分:1)

从int到有符号字节

int i = 200;                    // some value between 0 and 255
byte b = (byte) i;              // 8 bits representing that value

从有符号字节到整数

byte b = -100;                   // 8 bits representing a value between -128 and 127
int i = b & 0xFF;               // an int representing the value but in range [0..255]