powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSON массив в виде строки в byte[]
25 сообщений из 25, страница 1 из 1
JSON массив в виде строки в byte[]
    #39647437
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите может есть более лучший способ перегнать такое "[1,2,3,4,5,6,7,8, ...]" в массив байт?
В данном случае в строке в массиве это байты.

В гугле нашел такое решение.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
String response = "[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]"; 

String[] byteValues = response.substring(1, response.length() - 1).split(",");
byte[] bytes = new byte[byteValues.length];

for (int i=0, len=bytes.length; i<len; i++) {
   bytes[i] = Byte.parseByte(byteValues[i].trim());     
}

String str = new String(bytes);



Может более лучший способ такое сделать?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647455
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А найденный способ чем не устроил?
Какие именно характеристики преобразования желаете улучшить?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647465
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopМожет более лучший способ такое сделать?
Если вы планируете быть инженером, то "лучший" стоит конкретизировать.
- Меньше кода?
- Быстрее производительность?
- Меньше памяти?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647467
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Быстрее и меньше памяти.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647468
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovА найденный способ чем не устроил?
Какие именно характеристики преобразования желаете улучшить?
Устраивает. НО может еще варианты.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647472
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopУстраивает. НО может еще варианты.Предполагая кодировки US-ASCII/UTF-8, берёте "символьную последовательность байт" и преобразуете её в "байтовую последовательность байт", используя битовые маски и сдвиги.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647474
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Нашел вариант с Base64. В моём случае это передача файлов в чате. Получаю байты передаваемого файла и перегоняю в base64.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647478
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может JSONParser.parse(String) любой либой которая это умеет?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647479
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczМожет JSONParser.parse(String) любой либой которая это умеет?
Тоже вариант.
Еще предлагали Gson использовать.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647480
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopBlazkowicz,
Быстрее и меньше памяти.
Это будет больше кода. Перебирваешь сиволы циклом, набиваешь их сразу в байты каким-нибудь не очевидным математическим преобразованием ASCII-кода цифр в байт. По пробелу\запятой переходишь к следующему.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647481
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopBasil A. Sidorov,
Нашел вариант с Base64. В моём случае это передача файлов в чате. Получаю байты передаваемого файла и перегоняю в base64.
Как обычно, проблема в одном, вопрос совершенно о другом. Base64 это +30% к длине данных. Вы в курсе, да?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647492
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczTsyklopBasil A. Sidorov,
Нашел вариант с Base64. В моём случае это передача файлов в чате. Получаю байты передаваемого файла и перегоняю в base64.
Как обычно, проблема в одном, вопрос совершенно о другом. Base64 это +30% к длине данных. Вы в курсе, да?

ну исходный вариант это не +30%, а + 3-5 раз

если нужно передавать файлы по текстовому каналу, то лучше Base64 чем такой самодельный велосипед с квадратными колесами. IMHO
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647503
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevну исходный вариант это не +30%, а + 3-5 раз

Новое слово в кодировании?
https://en.wikipedia.org/wiki/Base64 The ratio of output bytes to input bytes is 4:3 (33% overhead)

Leonid Kudryavtsevесли нужно передавать файлы по текстовому каналу, то лучше Base64 чем такой самодельный велосипед с квадратными колесами. IMHO
А при чем тут велосипед? Просто есть более эффективные кодирования и способы передачи. Сейчас кодировать в Base64 в новых проектах вообще не актуально.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647504
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevну исходный вариант это не +30%, а + 3-5 раз

Ааа, речь про JSON? Не допёр сразу.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647512
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczАаа, речь про JSON? Не допёр сразу.
Если так посмотреть то в JSON формате будет больше символов чем Base64 из-за запятых и пробелов.
Для сравнения проверил и то и то:
JSON = ~150k символов
Base64 = ~50k
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647529
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЕсли так посмотреть то в JSON формате будет больше символов чем Base64 из-за запятых и пробелов.Учитесь делать оценки, а то так и будете выдавать ложные (умо)заключения.

base64 - регулярная схема, которая превращает каждые три байта в четыре символа.
JSON требует от одного до трёх символов для кодирования каждого байта и нуждается в одном-двух символах-разделителях.

Если исходный контент сжат, то значения всех байт примерно равновероятны.
Тогда получаем, то 10/256 байтов будут закодированы одним символом, 90/256 - двумя и 156/256 - тремя символами:
Код: plaintext
1.
2.
1*5   2*45   3*78   5 + 90 + 234   239
--- + ---- + ---- = ------------ = --- ~= 187%
128    128    128        128       128
без учёта разделителей.
С разделителями (только запятая или запятая и пробел) получаем 287 или 387 процентов относительно исходных байтов.
То есть, примерно, трёх- или четырёхкратную избыточность.

В лучшем случае (один символ на байт) получаем двух или трехкратную избыточность.
В худшем (три символа на байт) получаем четырёх- или пятикратную избыточность.

В случае base64, напомню, стабильные "плюс 34%" (134 процента кратности).
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647531
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, кстати, если канал передачи "прозрачный восьмибитный", то HTTP-ный "Content-Coding: chunked", позволяет передавать бинарные данные с избыточностью, не превышающей 3/16, что меньше, чем 1/3.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647535
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может пойдём дальше? Зачем массив? Давайте Iterable или Stream.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647539
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожет пойдём дальше? Зачем массив? Давайте Iterable или Stream.Насколько мне изменяет склероз, массив байт пригоден и для перечисления (итерирования) и для создания потока.
Куда идти и, главное, зачем?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647565
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Я говорю это ибо увидел кол-во символов того и того. Файл тот же самый.

То бишь Вы советуете не Base64 а JSON?
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647573
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopТо бишь Вы советуете не Base64 а JSON?И как, простите, вы сделали этот странный вывод?

P.S. Я, пожалуй, вообще воздержусь что-либо вам советовать ...
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647587
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovmaytonМожет пойдём дальше? Зачем массив? Давайте Iterable или Stream.Насколько мне изменяет склероз, массив байт пригоден и для перечисления (итерирования) и для создания потока.
Куда идти и, главное, зачем?
Это в трендах современного программирования.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647612
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovИ как, простите, вы сделали этот странный вывод?
P.S. Я, пожалуй, вообще воздержусь что-либо вам советовать ...
вывод? спросил у Вас.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647635
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маразм крепчает, мысли гнутся ...
Я, пожалуй, пас - есть предел уровня неадекватности, который лично я готов обсуждать.
...
Рейтинг: 0 / 0
JSON массив в виде строки в byte[]
    #39647680
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovМаразм крепчает, мысли гнутся ...
Я, пожалуй, пас - есть предел уровня неадекватности, который лично я готов обсуждать.
Господи. какие мы нежные...
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSON массив в виде строки в byte[]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]