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



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

"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"

基于对;二进制";字符串由ASCII字母、数字和"+"以及"/&";,我非常确信它实际上是Base64编码的数据。

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

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

如果输入字符串未正确进行Base64编码,则decode调用将抛出IllegalArgumentException


当我使用在线Base64解码器解码该特定字符串时,结果是无法理解的。但这正是我所期望的;blob";二进制数据。

通常,如果您在某个对象中有一个字符串,表示json负载,则可以:

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

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

在我的情况下,我必须转换我知道是文本的有效载荷,比如:

{"有效载荷":"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);

输出:

bytesToStr=eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9

bytesBase64Tostr={"user_id":4,"username":"x","city":"here"}

java.util.Base64.getDecoder((在我的案例中适用于

最新更新