当前位置: 首页 > 知识库问答 >
问题:

将所有 8 位二进制序列放入字符串数组 Java 中

荀学文
2023-03-14

我试图将所有可能的256位二进制序列放入一个字符串数组。为了做到这一点,我创建了8个for循环,以包含所有可能的情况。这是我到目前为止试过的。

static String[] BitSequences() {    
    int[] result = new int[256];
    for (int a = 0; a < 256; a++) {
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 2; j++){
                for (int k = 0; k < 2; k++){
                    for (int l = 0; l < 2; l++){
                        for (int m = 0; m < 2; m++){
                            for (int n = 0; n < 2; n++){
                                for (int o = 0; o < 2; o++){
                                    for (int p = 0; p < 2; p++){
                                        result[a] = ; //this part is a problem
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
    String str = Arrays.toString(result);
    System.out.println(str);
    return str;
}

这个方法应该返回一个包含所有可能情况的字符串数组。但是,我不知道如何通过使用int值进行for循环来插入这些值。很容易将它打印出来:“System.out.println(i j k.....p)'任何帮助都将不胜感激!

共有2个答案

云骏奇
2023-03-14

一个8位二进制补码整数,范围从< code>-128到< code>127。为了表示这个范围,我们可以使用< code > int stream # range closed 。

从这个答案中,如果长度小于8(表示值为正),我们可以利用BigIntger将二进制String(由Intger#toBinaryString生成)左键填充为0。

否则,该值表示负数,其各自的二进制字符串的长度将大于 8,必须使用 String#substring 将其截断为 8 个字符。

最后,< code >流

public static String[] generateBitSequences() { 
    return IntStream.rangeClosed(-128, 127)
        .mapToObj(Integer::toBinaryString)
        .map(BigInteger::new)
        .map(b -> String.format("%08d", b))    // Left pad positive values with 0s.
        .map(s -> s.substring(s.length() - 8)) // Remove leading 1s from negative values.
        .toArray(String[]::new);
}

输出:

[10000000, 10000001, ..., 01111110, 01111111]
姚嘉容
2023-03-14

请考虑对二进制字符串使用内置转换方法:

static String[] BitSequences() {    
    String[] result = new String[256];
    for (int a = 0; a < 256; a++) {
        result[a] = Integer.toBinaryString(a);
    }
    String str = Arrays.toString(result);
    System.out.println(str);
    return str;
}
 类似资料:
  • 我有一些代码如下所示。 该项目的标准字符集是“UTF-8”。并且所有消息都很好地打印为UTF-8。我猜把UTF-8字符串放入java.lang.Object是压垮UTF-8的原因。 我该怎么解决这个? 我已经试过了: =在上块中= =配置= 将消息转换器添加到root-context.xml中,如下所示。 ===*条件=== 感谢阅读和分享我的问题:D

  • 问题内容: 我需要将二进制字符串转换为十六进制字符串,但是我有问题。我通过这种方法将二进制字符串转换为十六进制字符串: 没关系!但是我丢失了字符串左侧的零。例如: 该方法返回此:123456789ABCDEF,但我想返回此: 00000123456789ABCDEF 问题答案: 而不是我将使用解析值,然后以所需的宽度(在您的示例中为21)输出值:

  • 问题内容: 我也想将我的二进制(在字符串中)转换为十六进制字符串,这只是一个程序片段,因为该程序只是另一个更大程序的一部分: 问题是我不知道填充是否有效,但是我确定该程序返回了二进制字符串的错误十六进制转换,我正在尝试这样做: http://www.wikihow.com/Convert-Binary-to- Hexadecimal PS:我需要实现它(不使用任何内置函数) 问题答案: 如果您不必

  • 问题内容: 假设我有字符串: 我得到的位置无关紧要,但是为了具体起见,假设我从二进制文件中读取了它。 我知道我的字符串是4(4字节)浮点数的二进制表示形式。我想将那些浮点数作为一个numpy数组。我 可以 做: 但是创建中间元组似乎很愚蠢。有没有一种方法可以在不创建中间元组的情况下执行此操作? 编辑 我还希望能够以可以指定字符串的字节序的方式构造数组。 问题答案: 或者,如果您想要大端字节序: 的

  • 问题内容: 这一定很明显,但我无法弄清楚。我为此花了将近一整天。我很乐意给减轻我体重的人买啤酒。 这是我的代码。我看到字节数组大小不合适,但是我找不到正确的大小。除此之外,内容也不是不正确的。似乎只有文字字符可以。 似乎从二进制文件中删除数据确实很痛苦,我真的很沮丧。 还有一件事:文件内容不是文本,可以是图片,视频或pdf之类的东西。 问题答案: 如果你正在读一个二进制文件,你应该 不 尝试把它当

  • 所以,我知道这可能是一个非常愚蠢的问题,我是一个初学者,试图学习Java基础知识,我有一个字符串数组的问题,我不太明白。当我尝试将单词输入到字符串数组中,并且单词的数量由用户设置(例如5)时,我总是可以少输入一个单词(例如4而不是5)。我的代码在下面。