Шестнадцатеричное значение из файла свойств: JAVA - PullRequest
0 голосов
/ 04 ноября 2011

В моей Java-программе мне нужен байтовый массив из шестнадцатеричной строки.Поэтому я делаю следующее:
byte[] key=HexUtils.convert("0AA387ED291F6D90");

Это преобразует шестнадцатеричную строку в байтовый массив следующим образом:
Вывод: Byte Array: key:[10, -93, -121, -19, 41, 31, 109, -112]

Теперь я хочу переместитьсяшестнадцатеричная строка в файле свойств.Но я не в состоянии сделать это.

Try 1:
Properties file ====> key=0AA387ED291F6D90
Java Program ====> byte[] key = HexUtils.convert(prop.getProperty("key"));

Это дает ошибку: ПЛОХАЯ ШЕСТАЯ ЦИФРА

Try 2:
Properties file ====> key=\u000A\u00A3\u0087\u00ED\u0029\u001F\u006D\u0090
Java Program ====> byte[] key = HexUtils.convert(prop.getProperty("key"));

Output: key:[10, -93, 63, -19, 41, 31, 109, 63]

Если вы заметили, 2 байтаотличаются от ожидаемых.Шестнадцатеричный 87 и шестнадцатеричный 90. Оба преобразуются в 63. В то время как я ожидаю -121 и -112 соответственно.

Может кто-нибудь, пожалуйста, помогите мне, как мне сделать это преобразование.Я надеюсь, что я ясно!

Angad

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Если вы используете коды \uxxxx, вы используете escape-последовательности UNICODE.\u0090 в конечном итоге не будет интерпретироваться как строка "90", в итоге он будет представлять собой один символ, соответствующий кодовой единице 0090 в кодировке UTF-16

Ваш первый подход должен работать.Я предлагаю вам попробовать System.out.println(prop.getProperty("key")); или другую форму вывода и проверить, есть ли пробелы в начале или в конце, какой-то символ, которого вы не ожидали, или null.Последнее означало бы, что свойство "ключ" не найдено.

0 голосов
/ 04 ноября 2011

Кажется, что у меня были некоторые проблемы с байтами, потому что байты подписаны, но при преобразовании из строк значения, превышающие 127, вызывали проблемы, потому что они были слишком большими.

Я думаю, что закончил анализом шестнадцатеричных пар по одному, преобразовал их в целые и сохранил их как байты.

Кроме того, в зависимости от того, что вы делаете, вы можете оставить их в виде целых чисел, поскольку байты преобразуются внутренне в целые, прежде чем выполнять вычисления, и поэтому целые числа будут быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...