java - 在JAVA中解码(通过python类型转换类型转换为字符串的Base64编码数据)到字节数组
问题描述
嗨,我在类型转换方面遇到了一些问题。首先,使用python3.7,我从图像文件中读取数据并将其编码为base64,然后是字节类型。然后,我使用下面的类型转换 Python 代码将字节数据转换为字符串。
f = open("monitor-1.png", "rb")
data = f.read()
encoded_string = str(base64.b64encode(data))
然后我使用套接字将它发送到java程序
要从 java 程序中查看图像,需要从接收到的数据中获取字节数组。但是我该怎么办?python的类型转换让我很困惑..
解决方案
也许您应该提供一个可用于重现您的问题的代码段。
以下片段正在工作
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=='
在 Java 中使用 Base64 编码的字符串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
推荐阅读
- python - Python 重构方法中的 if-elif-else 语句
- spring-boot - 当 jax-rs 作为 Spring Boot 应用程序运行时,jax-rs @Provider 无法正确接收
- c# - 通过 SmtpClient 和 smtp.office365.com 发送邮件设置邮件的敏感度为普通、个人、私人或机密
- openedge - 进展 4GL - 哪些更改对 CRC 没有影响/影响?
- java - Java SpringBoot OpenApi @ApiResponse 显示错误的返回对象
- typescript - Typescript 泛型在变量和逻辑运算符之间的工作方式不同
- snowflake-cloud-data-platform - Snowflake CROSS JOIN 在 VALUES 子句中引用先前表
- css - 在 React 中将 TextField 与 LinearProgress 对齐
- google-apps-script - Apps 脚本:如何在编辑时将谷歌搜索链接添加到单元格值?
- json - 不能为 3 个变量分配多个值