Я получил такую строку: "1F8B0800000000000003E3E6CFDBA5C820CBC0C09122ECA1C8C0F281CDC54B2138D2CF99C9D0C87866B788E9FC37860700B43D2BB325000000"
И теперь я хочу преобразовать эту строку в массив байтов: byte[] payload = new byte[] {0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE3, 0xE6, 0xCF, 0xDB, 0xA5, 0xC8, 0x20, 0xCB, 0xC0, 0xC0, 0x91, 0x22, 0xEC, 0xA1, 0xC8, 0xC0, 0xF2, 0x81, 0xCD, 0xC5,0x4B, 0x21, 0x38, 0xD2, 0xC, 0xC9, 0x99, 0x99 0x78, 0x66, 0xB7, 0x88, 0xE9, 0xFC, 0x37, 0x86,0x07, 0x00, 0xB4, 0x3D, 0x2B, 0xB3, 0x25, 0x00, 0x00, 0x00 };
Кто-нибудь может мне помочь ?
Благодарность
Byte[] payload = new byte[] {0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE3, 0xE6, 0xCF, 0xDB, 0xA5, 0xC8, 0x20, 0xCB, 0xC0, 0xC0, 0xC0 0x91, 0x22, 0xEC, 0xA1, 0xC8, 0xC0, 0xF2, 0x81, 0xCD, 0xC5,0x4B, 0x21, 0x38, 0xD2, 0xCF, 0x99, 0xC9, 0xD0, 0xC8, 0x78, 0xFC, 0x9, 0x66, 0xB7, 0xB7 0x37, 0x86,0x07, 0x00, 0xB4, 0x3D, 0x2B, 0xB3, 0x25, 0x00, 0x00, 0x00 };
1 ответ
Вы можете использовать цикл для преобразования каждой пары символов в строке в соответствующее значение байта и сохранить его в массиве байтов. Вот пример фрагмента кода на Java:
String hexString = "1F8B0800000000000003E3E6CFDBA5C820CBC0C09122ECA1C8C0F281CDC54B2138D2CF99C9D0C87866B788E9FC37860700B43D2BB325000000";
int length = hexString.length();
byte[] payload = new byte[length / 2];
for (int i = 0; i < length; i += 2) {
String hex = hexString.substring(i, i + 2);
payload[i / 2] = (byte) Integer.parseInt(hex, 16);
}
Этот код сначала инициализирует полезную нагрузку пустого массива байтов длиной, равной половине длины входной шестнадцатеричной строки, поскольку каждый байт представлен двумя шестнадцатеричными символами. Затем он перебирает строку по парам символов, извлекает каждую пару как подстроку, преобразует ее в целочисленное значение с помощью Integer.parseInt() с основанием 16 (шестнадцатеричное) и сохраняет полученное значение байта в массиве байтов.
После этого цикла полезная нагрузка будет содержать байты, соответствующие входной шестнадцатеричной строке. Обратите внимание, что этот код предполагает, что входная строка содержит допустимую последовательность шестнадцатеричных символов четной длины, иначе могут возникнуть исключения.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
new BigInteger(payloadString, 16).toByteArray();
.> 0x7F
при использовании предыдущего решения (может быть проблема - байт0x00
добавлен впереди, чтобы получить положительное число)