gpt4 book ai didi

java - 用于十六进制到二进制转换的填充,以便每个十六进制数字产生 4 位

转载 作者:行者123 更新时间:2023-11-30 07:28:20 25 4
gpt4 key购买 nike

我有以下代码尝试用零向左填充二进制字符串:

int i = Integer.parseInt(input, 16);
String binaryString = Integer.toBinaryString(i);
String pad = String.format("%4s", Integer.toBinaryString(i)).replace(' ', '0');

当输入为“1”时,它会正确生成“0001”,但如果我添加额外的十六进制数字,它不会再添加填充。例如,"2F" 生成 "101111",但我希望它是 8 位,如 001011111

我该如何解决这个问题?

最佳答案

您的问题是您指定了4最小宽度,但2F6位,因此产生了 6 个字符。

您可以:

  • 单独格式化每个十六进制数字并将结果连接起来
  • 使格式宽度动态 - 4 倍的十六进制数字
  • 使用基于字符串的方法
  • 还有其他事情

最简单的是基于字符串的方法,如果您将要求改写为“始终生成 4 位的倍数”。

具体操作方法如下:

String pad = String.format("%32s", Integer.toBinaryString(i)).replace(' ', '0')
.replaceAll("^(0000)+", "");

不同之处在于我将输出更改为 32 个字符(int 的最大位数),并通过添加 一次修剪掉 4 个前导零>.replaceAll("^(0000)+", "") 替换为您的代码。

该正则表达式匹配“字符串开头出现 1 次或多次 0000”,并且替换术语为空白,因此任何匹配的内容都会被“删除”。

关于java - 用于十六进制到二进制转换的填充,以便每个十六进制数字产生 4 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36521648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com