将位转换为 Base64 字符
Convert a bit to Base64 character
我需要将二进制字符串("110100",十进制为 52)转换为对应的 Base64字符,我知道是“0”。 Java 中有什么方法可以做到这一点吗?我正在阅读多个 base 64 指南,但我找不到答案。
为澄清起见,转换 table 在这里:https://www.lifewire.com/base64-encoding-overview-1166412(Base64 编码 Table 部分)我想要 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
我需要将二进制字符串("110100",十进制为 52)转换为对应的 Base64字符,我知道是“0”。 Java 中有什么方法可以做到这一点吗?我正在阅读多个 base 64 指南,但我找不到答案。
为澄清起见,转换 table 在这里:https://www.lifewire.com/base64-encoding-overview-1166412(Base64 编码 Table 部分)我想要 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