当我使用Base64.encode(bytearray,Base64.DEFAULT)对我的字节数组进行编码时,这个方法的结果将在结果字节数组的最后一项中添加10,当我将此结果字节数组转换为字符串而不是10时将转换最后进入\ n(换行) 请告诉我为什么\ n会在最后追加
下面是将字符串转换为字节数组的代码
int inLength = hexValue.length();
int i, o = 0;
long outByte = 0;
byte[] outBytes = new byte[(inLength / 2)];
for (i = 0; i < inLength; i++) {
char c = hexValue.charAt(i);
int value = -1;
if (c >= '0' && c <= '9')
value = (c - '0');
else if (c >= 'A' && c <= 'F')
value = 10 + (c - 'A');
else if (c >= 'a' && c <= 'f')
value = 10 + (c - 'a');
if (value >= 0) {
if (i % 2 == 1) {
outBytes[o++] = (byte) ((outByte << 4) | value);
outByte = 0;
} else {
outByte = value;
}
} else {
if (o != 0)
break;
}
}
return outBytes;
答案 0 :(得分:0)
我现在不能发表评论所以我不得不回复。 这段代码是你写的吗?还是其他人?
对于Base64编码,一次以3个字节的块处理字节。如果数组的长度不是3的倍数,则附加一个或两个'0'零字节以形成完整的块。
为什么要编写自己的逻辑,哪些API可用于为您完成工作?
更新:我只是在API的帮助下再次运行代码。
Input String: 51b034267f00000144495444
和
Corresponding Base64 encoded String: NTFiMDM0MjY3ZjAwMDAwMTQ0NDk1NDQ0
简单地说,3个字节将产生4个纯文本编码字节。