Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36

Преобразовать hex-строку в byte []

03.01.2018, 16:10. Показов 3534. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. есть строка типа "0xF0 0x9F 0x87 0xB7 0xF0 0x9F 0x87 0xBA". необходимо ее перевести в формат типа:

Java
1
2
3
4
5
6
7
8
9
byte [] test = new byte [8];
        test [0] = (byte) 0xF0;
        test [1] = (byte) 0x9F;
        test [2] = (byte) 0x87;
        test [3] = (byte) 0xB7;
        test [4] = (byte) 0xF0;
        test [5] = (byte) 0x9F;
        test [6] = (byte) 0x87;
        test [7] = (byte) 0xBA;
делаю так:

Java
1
2
3
4
5
6
7
String inp = "0xF0 0x9F 0x87 0xB7 0xF0 0x9F 0x87 0xBA";
 
String [] GetByte = Inp.trim().split(" ");
        byte [] EmojiByte = new byte [GetByte.length];
 
    for (int i = 0; i<GetByte.length-1; i++)
            EmojiByte [i] = (byte)Integer.parseInt(GetByte [i+1].replace("0x", ""), 16);
Вроде как делаю сравнения массивов, визуально все нормально:
Java
1
2
 System.out.println(Arrays.toString(test));
         System.out.println(Arrays.toString(EmojiByte));
результат:
Java
1
2
[-16, -97, -121, -73, -16, -97, -121, -70, 0]
[-16, -97, -121, -73, -16, -97, -121, -70, 0]
Одна вывод, выдает разные рузультаты:
Java
1
2
                System.out.println(EmojiByte); //[B@404b9385
        System.out.println(test); //[B@6d311334
и как результат полученный массив байт обрабатывается неправильно (в конкретном случаи не отображается смайлик). с массивом test - все нормально.
Подскажите, что делаю не так? Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.01.2018, 16:10
Ответы с готовыми решениями:

Преобразовать BYTE в HEX
Я читаю содержимое файла в BYTE и потом хочу вывести его в editbox, но сначала мне нужно преобразовать его в HEX. Тут я не совсем понимаю...

Как получить HEX строку из byte?
Что - то вообще не работает... void ByteToHex(char Hex, byte Sourse) { char const hex_chars = {'0', '1', '2', '3', '4', '5', '6',...

Перевести char* или byte* в Hex-строку
Собственно сабж. А ситуация такая: Есть функция принимающая толи char* толи BYTE* и мне нужно перевести этот массив в HEX-строку, при чом...

16
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.01.2018, 16:41
Косяк на косяке... Начать с того, что 0хF0 никак не -16. Продолжать?
0
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
03.01.2018, 16:52  [ТС]
iSmokeJC, да
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.01.2018, 16:56
Что ты вообще хочешь сделать с этими хекс-числами? Вывести их десятичные значения или что?
0
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
03.01.2018, 17:02  [ТС]
данная hex-строка это смайл для телеграмм. соответственно его необходимо перекодировать в строку-символ: new String (test, "UTF-8")
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.01.2018, 17:03
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Начать с того, что 0хF0 никак не -16. Продолжать?
очень даже -16, продолжай
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.01.2018, 17:09
Цитата Сообщение от xoraxax Посмотреть сообщение
очень даже -16
обоснуй неразумному падавану, плиз
0
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
03.01.2018, 17:17  [ТС]
сделай:
Java
1
2
3
4
byte [] ss = new byte [1];
        ss [0] = (byte) 0xF0;
        
        System.out.println(ss [0]);
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.01.2018, 17:22
Все, понял почему пошел учить матчасть
0
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
03.01.2018, 17:36  [ТС]
а по теме топика, вариантов не будет? ))))
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
03.01.2018, 18:02
Цитата Сообщение от chiffacff Посмотреть сообщение
Одна вывод, выдает разные рузультаты
А с чего бы ему выдавать одинаковые?

Цитата Сообщение от chiffacff Посмотреть сообщение
и как результат полученный массив байт обрабатывается неправильно
Где он обрабатывается неправильно?
0
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
03.01.2018, 18:23  [ТС]
new String (test, "UTF-8") - отбражает корректно смайл
new String (EmojiByte, "UTF-8") - смайл не отобрадается

Java
1
byte [] EmojiByte = test //[B@6d311334 = [B@6d311334
new String (EmojiByte, "UTF-8") - смайл отбражает корректно
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.01.2018, 19:08
а теперь запусти дебаггер и посмотри, чем test отличается emojiByte

Добавлено через 52 секунды
Цитата Сообщение от chiffacff Посмотреть сообщение
System.out.println(EmojiByte); //[B@404b9385
* * * * System.out.println(test);
System.out.println(Arrays.toString(test) );
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
03.01.2018, 21:33
Цитата Сообщение от chiffacff Посмотреть сообщение
Java
1
byte [] EmojiByte = test //[B@6d311334 = [B@6d311334
Почитай, чем ссылка отличается от значения и что означает строка «[B@6d311334».

Цитата Сообщение от chiffacff Посмотреть сообщение
Вроде как делаю сравнения массивов, визуально все нормально:
Java
1
2
System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(EmojiByte));
результат:
Java
1
2
[-16, -97, -121, -73, -16, -97, -121, -70, 0]
[-16, -97, -121, -73, -16, -97, -121, -70, 0]
Вот откуда ты это взял? В уме запускал, что ли?

https://ideone.com/fySzTe

Code
1
2
[-16, -97, -121, -73, -16, -97, -121, -70]
[-97, -121, -73, -16, -97, -121, -70, 0]
0
0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
04.01.2018, 00:28  [ТС]
блин, не та входящая строка, но один фиг разницы...

https://ideone.com/kBaqf1
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
04.01.2018, 00:46
Вопрос то в чем в итоге?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
04.01.2018, 10:43
Цитата Сообщение от chiffacff Посмотреть сообщение
блин, не та входящая строка, но один фиг
И правда, один фиг:



В чём проблема-то?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2018, 10:43
Помогаю со студенческими работами здесь

Нельзя преобразовать тип function(a: byte;b: byte): byte к integer (Списки)
Создать список из целых чисел.Поменять в списке местами максимальный и минимальный элементы Проблемы c процедурами Pos и Chang: пос...

Преобразовать hex в строку
Приветствую. Подскажите как проще сделать. В регистре EAX есть значение, например 2db, нужно записать в буфер значение как текст...

Преобразовать строку в hex
Подскажите пожалуйста! Как преобразовать строку TextBox-a в массив байтов? Ввожу в TextBox &quot;222222&quot; (без кавычек) в listBox...

Соединить обычную строку и байтовый массив и преобразовать это все в byte для отправки
Здравствуйте. Помогите пожалуйста решить проблему. Проблема состоит в том, что мне нужно соединить обычную строку (string) и байтовый...

Как преобразовать hex в ascii (HEX редактор)
Написал: String ^in; openFileDialog1-&gt;Filter = &quot;hex Files|*.hex&quot;; openFileDialog1-&gt;Title = &quot;Select a hex File&quot;; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru