对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
类型的数组。那么,我应该如何解释这个数组?
例如,如果s
是String
,并且bArray
是s.getBytes("UTF-8")
的返回数组,则:
如果bArray[0]
为-100,那么此UTF-8表示形式的第一个无符号字节(在0到255之间)是什么?
如果此UTF-8表示形式的第一个无符号字节(范围为0到255)为200,那么bArray[0]
是什么?
答案 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]