[英]Generating all possible 8 bit binary Strings
我有一个密码密钥,格式为“ XY XY + 1 XY + 2 XY + 3 XY + 4 XY + 5 FF FF”,其中XY是未知字节,例如,XY可以是00000000,所以XY + 1是00000001此外,FF是常数,因此始终为11111111。
我有一个addBinary()
方法,该方法将1加到我给它的任何二进制字符串中,但是,我发现很难生成所有由“ xxxx ... 11111111 11111111”组成的二进制字符串。
我还在StackOverflow上找到了这个printB()
方法,该方法生成字符串,但是只是不确定如何将FF硬编码到其中。
static void printB()
{
for(int i = 0; i < Math.pow(2,8); i++)
{
String format="%0"+8+"d";
System.out.printf(format,Integer.valueOf(Integer.toBinaryString(i)));
System.out.println();
}
}
任何有关如何生成此字符串的帮助将不胜感激
如果您想要二进制数字以0-s为前缀,则必须做一些工作。 在这里,我使用了一个用0填充的StringBuilder,从头开始替换了没有0填充的二进制表示形式。
for (int i = 0; i <= 0xFF; i++) {
StringBuilder builder = new StringBuilder("00000000");
String binary = Integer.toBinaryString(i);
builder.replace(8 - binary.length(), 8, binary);
System.out.println(builder);
}
除了格式化输出,我建议不要使用字符串"1"
和"0"
。 在内部,您应该将“密钥”存储为byte[8]
,因此:
byte[] key = new byte[8];
for(int i=0; i<6; i++) {
key[i] = (byte) x + i;
}
key[6] = (byte) 0xff;
key[7] = (byte) 0xff;
作为将其转换为可打印字符串的第一步,您只需要:
String result = IntStream.range(0,8)
.map(i -> key[i])
.mapToObj(n -> intToBinaryString(n))
.collect(Collectors.joining(" "));
...,然后您需要一个intToBinaryString()
方法。 有很多SO答案描述了如何执行此操作-例如: 在Java中以二进制格式打印整数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.