[英]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.