У меня есть строки, которые всегда шестнадцатеричные, такие как «FF», «BB», «AA» и т. Д. Я сделал небольшой эксперимент с кодировкой, и это выглядит так: hexadecimal
is беря вдвое больше байтов, чем эти вещи в представлении String.Шестнадцатеричное представление занимает больше места, чем должно было
Мой код как это:
String hex ="FF";
byte[] b = hex.getBytes();
String enc = base16().encode(hex.getBytes());
byte[] c = enc.getBytes();
Я использую гуавы Utils сделать материал кодирования.
Похоже, что hex
принимает два байта, поэтому b
имеет длину 2. Затем я кодирую его в шестнадцатеричный. «FF» равен 255 в десятичной форме, поэтому ему необходимо принять 1 byte
. Но enc
теперь составляет 4 байта и равно "4646"
.
Далее, c
- 4 байта.
Я не понимаю, где создается enc
. Я хочу c
взять 1 байт. Может кто-то бросить какой-то свет?
Спасибо!
Это имеет смысл! Спасибо тонну –