Отрицательные значения возникают из-за того, что диапазон byte
составляет от -128 до 127. Следующий код выдаст положительные значения:
String a = "\u05D0\u05D1";
byte[] xxx = a.getBytes("UTF-8");
for (byte x : xxx) {
System.out.println(Integer.toHexString(x & 0xFF));
}
Основное отличие состоит в том, что он выводит x & 0xFF
вместо x
, эта операция преобразует byte
в int
, удаляя знак.