[英]Converting byte array to base64 string java
尝试使用org.apache.commons.codec.binary.Base64
..将byte[]
转换为base64字符串。为此,我的Java代码如下所示:
base64String = Base64.encodeBase64URLSafeString(myByteArray);
但是我看到的是生成的base64
字符串中的一些无效字符。
为什么在生成的base64
字符串中看到这些____
行? 它是有效的字符串吗? 请注意,生成的字符串的长度可以除以四。
您是否尝试使用encodeBase64String
方法而不是使用encodeBase64URLSafeString
?
encodeBase64URLSafeString:
使用base64算法的URL安全变体对二进制数据进行编码,但不对输出进行分块。 网址安全变体发出-和_而不是+和/字符。
encodeBase64String:
使用base64算法对二进制数据进行编码,但不对输出进行分块。 注意:我们将此方法的行为从多行分块(commons-codec-1.4)更改为单行非分块(commons-codec-1.5)。
这可能会有所帮助
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
encoder.encode(byteArray);
使用
String sCert = javax.xml.bind.DatatypeConverter.printBase64Binary(pk);
您(至少)有两种口味的base64,最初的一种除字母数字字符外还使用'+'和'/',另一种是“ url safe”,使用“-”和“ _”使内容可以包含在URL中(或用作文件名,btw)。
看来您使用的是已变成“网址安全模式”的base64编码器。
apache的URLSafeString()的javadoc
哦, '_'
是base64字母的最后一个字符,看到字符串"____"
意味着您已经编码了0xffffff ...的块,就像看到“ AAAAAA”意味着有很多连续的零一样。
如果您想确定这是正常情况,只需选择您喜欢的十六进制转储器/编辑器,然后检查您的二进制输入是什么样。
通过以下过程,您可以将字节数组转换为Base64
// Convert a byte array to base64 string
byte[] bytearray= new byte[]{0x12, 0x23};
String s = new sun.misc.BASE64Encoder().encode(bytearray);
// Convert base64 string to a byte array
bytearray = new sun.misc.BASE64Decoder().decodeBuffer(s);
编辑:
请在下面的链接共享库Apache中查看指南
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.