Декодирование (данные в кодировке Base64 с преобразованием типа в строку путем преобразования типа Python) в байтовый массив в JAVA - PullRequest
0 голосов
/ 07 января 2019

Привет, у меня есть проблемы с преобразованием типов. Сначала, с python3.7, я считал данные из файла изображения и закодировал их как base64, который затем является байтовым типом. Затем я преобразовал байтовые данные в строку с преобразованием типов Коды Python приведены ниже.

f = open("monitor-1.png", "rb")
    data = f.read()
    encoded_string = str(base64.b64encode(data))

Затем я отправил его в Java-программу, используя сокет

Для просмотра изображения из Java-программы, нужно получить байтовый массив из полученных данных. Но что мне делать? Преобразование типов python меня смущает ..

1 Ответ

0 голосов
/ 07 января 2019

Возможно, вам следует предоставить фрагмент, который можно использовать для воспроизведения вашей проблемы.

Следующие фрагменты работают

import base64
f = open("monitor-1.png", "rb")
data = f.read()
encoded_string = str(base64.b64encode(data))
print(encoded_string)
f.close()

выход

b'iVBORw0KGgoAAAANSUhEUgAAAAIAAAABAQMAAADO7O3JAAAABlBMVEUAAAD///+l2Z/dAAAACklEQVQI12NoAAAAggCB3UNq9AAAAABJRU5ErkJggg=='

с использованием строки в кодировке Base64 в Java jshell

jshell> byte[] bytes = Base64.getDecoder().decode("iVBORw0KGgoAAAANSUhEUgAAAAIAAAABAQMAAADO7O3JAAAABlBMVEUAAAD///+l2Z/dAAAACklEQVQI12NoAAAAggCB3UNq9AAAAABJRU5ErkJggg==")
bytes ==> byte[85] { -119, 80, 78, 71, 13, 10, 26, 10, 0, 0 ... 8, 68, -82, 66, 96, -126 }

jshell> Files.write(Paths.get("out.png"), bytes)
$2 ==> out.png

создает файл out.png

Файл monitor-1.png и out.png равны

$ md5sum monitor-1.png out.png 
49b0cecce3c3ce0966afd6c13b03a4b5  monitor-1.png
49b0cecce3c3ce0966afd6c13b03a4b5  out.png
...