Java 将位转换为Base64字符

Java 将位转换为Base64字符,java,base64,Java,Base64,我需要将二进制字符串(“110100”,十进制52)转换为相应的Base64字符,我知道它是“0”。Java中有什么方法可以做到这一点吗?我正在阅读多个base 64指南,但我找不到答案 为了澄清,转换表如下:(Base64编码表部分)我想要52,将其转换为“0”字符 非常感谢。首先需要将二进制字符串转换为字节数组。关于如何实现这一点,有很多帖子,但在伪代码中,它看起来如下所示 Read up to 4 characters; Byte.parseByte(chars, 2);

我需要将二进制字符串(“110100”,十进制52)转换为相应的Base64字符,我知道它是“0”。Java中有什么方法可以做到这一点吗?我正在阅读多个base 64指南,但我找不到答案

为了澄清,转换表如下:(Base64编码表部分)我想要52,将其转换为“0”字符


非常感谢。

首先需要将二进制字符串转换为字节数组。关于如何实现这一点,有很多帖子,但在伪代码中,它看起来如下所示

  Read up to 4 characters;

  Byte.parseByte(chars, 2);

  Append to byte array;

然后,您可以使用Base64.Encoder对字节进行编码。

因为字节的长度为8位,而Base64通过只获取6位来构成其值。我能想到的最简单的方法是在所需字符的开头追加两个字符,并只获取结果的最后一个字符:

String encode = String.format("00%s", (char) Integer.parseInt("110100", 2));
String encoded = new String(Base64.getEncoder().encode(encode.getBytes()));
System.out.println(encoded.charAt(encoded.length() - 1));
// Prints: 0

有任意数量的base64库。有什么原因不能使用它们吗?我知道java.util.base64编码器和java.util.base64解码器。但是,如果我只是将“110100”字符串作为参数传递,则无法达到所需的值。只使用
Integer.toString(Integer.parseInt(“…”,2),64)
?我无法将字符串传递给Integer.toString(“…”,64)。如果我使用Integer.toString(52,64),它就不起作用。@exto
Integer.toString()的最大基数是36。非常感谢,它起作用了!。我试着自己把它弄平,特别是第一行。