繁体   English   中英

如何将二进制有效负载(文件)转换为 java 中的 byte[]?

[英]How to convert binary payload (file) to byte[] in java?

我收到 json 数据,其中包含这样的二进制数据,我想将该数据转换为 java 中的字节 [],但我不知道如何?

"payload": "7V1bcxs3ln6frfdcfvfbghfdX8HSw9Zu1QzzartyhblfdcvberCObjvJpkiJUpmhRI1pKXYeXHRsZLSrCy
5dElN5tfvQaO72TdSoiOS3TH8Yxdffgtg754679513qdfrgvlslsqdeqaepdccngrdzedrtghBD+d++e7v//p80/v96v7h+u72
+z1gfK/39x/+9t391cPTzeP88aE/++Fvvd53n+8+Xd1c/fBm/unqAf+7
N7v65en++vGP3vx2fvPHw/XDdwfpHf5mevhq/vQDcnAAwD+gEPwDF+bDxTv+3UF61d/4eesrfP356uFx"

通常,如果您在某些 object 中有一个字符串,表示 json 有效负载,您可以:

String s = "7V1bcxs3ln6...";
byte [] bytes = s.getBytes();

除此之外,如果应该以某种方式解码此有效负载,则将需要额外的代码。

根据观察到“二进制”字符串由 ASCII 字母、数字和“+”和“/”组成,我相当确信它实际上是Base64 编码数据。

要将 Base64 解码为byte[]您可以执行以下操作:

String s = "7V1bcxs3ln6...";
byte [] bytes = java.util.Base64.getDecoder().decode(s);

如果输入字符串的 Base64 编码不正确, decode调用将抛出IllegalArgumentException


当我使用在线 Base64 解码器解码该特定字符串时,结果难以理解。 但这对于二进制数据是可以预料的。

在我的例子中,我必须转换我知道它是文本的有效负载,例如:

{“有效载荷”:“eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9”}

这是java.util.Base64.getDecoder()和getBytes()的区别:

    String s = "eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9";
    byte [] bytes = s.getBytes();
    byte [] bytes_base64 = java.util.Base64.getDecoder().decode(s);
    String bytesToStr = new String(bytes, StandardCharsets.UTF_8);
    String bytesBase64Tostr = new String(bytes_base64, StandardCharsets.UTF_8);
    
    System.out.println("bytesToStr="+bytesToStr);
    System.out.println("bytesBase64Tostr="+bytesBase64Tostr);

Output:

bytesToStr=eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9

bytesBase64Tostr={"user_id":4,"用户名":"x","city":"这里"}

java.util.Base64.getDecoder() 适用于我的情况

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM