将Python的Base32字符转5bit值代码改写为Java,求对应格式化语法
将Python的Base32字符转5bit代码改写为Java
需求说明
原Python代码的作用是把自定义Base32字母表中的每个字符,映射为对应的5位二进制字符串(索引0对应00000,索引31对应11111)——因为字母表共32个字符,正好用5位二进制完整表示。
Java实现代码
import java.util.HashMap; import java.util.Map; public class Base32BitMapper { public static void main(String[] args) { String wordSafeAlphabet = "23456789CFGHJMPQRVWXcfghjmpqrvwx"; Map<Character, String> charToBitMap = new HashMap<>(); for (int i = 0; i < wordSafeAlphabet.length(); i++) { char c = wordSafeAlphabet.charAt(i); // 将整数i转为5位二进制字符串,不足5位时前面补0 String bitStr = String.format("%5s", Integer.toBinaryString(i)).replace(' ', '0'); charToBitMap.put(c, bitStr); } // 可选:打印映射结果验证 // charToBitMap.forEach((k, v) -> System.out.println(k + ": " + v)); } }
关键语法对应说明
Python中的"{0:05b}".format(i)是把整数格式化为5位补0的二进制字符串,Java中没有直接匹配的格式化符,但可以通过两步实现等价效果:
Integer.toBinaryString(i):将整数转为无前置0的二进制字符串String.format("%5s", ...).replace(' ', '0'):把二进制字符串补空格到5位长度,再将空格替换为0,得到带前置0的5位二进制字符串
内容的提问来源于stack exchange,提问作者D.S.
相关产品推荐
相关产品推荐

