有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java&MySQL:将读取数据存储在比特数组的365个位置。怎样

我目前正在使用Java和MySQL,发现了一个我不知道如何解决的问题

我有一个类,它存储365个位置的字符串,表示二进制字符串“010111010010100…”,我希望能够从数据库中存储和读取该字段。 读取后,我将使用另一个位数组执行AND逻辑操作

我读过关于允许逻辑运算符(AND,OR,XOR,…)的位集类在他们之间。我试过了,但我不喜欢我得到的解决方案。我还可以尝试将字符串转换为字节数组,然后从数据库中存储和读取它,以便以后执行逻辑和操作,但不确定是否需要始终创建位集,以及它的性能如何

我不知道做我想做的事哪种方式最有效:

  • 转换另一个元素中的二进制字符串
  • 将该元素存储在数据库中(对于位集,我尝试将数据库字段定义为BLOB,但在将位集转换为BLOB和将BLOB读取为位集时遇到了很多问题)
  • 从数据库中读取元素(此时直接使用该元素而不进行任何转换或转换将非常好)
  • 使用另一个位数组执行逻辑AND并获得结果

我尝试了很多选择,但都不奏效

有人能帮我解决这个问题吗?如何从性能的角度更好地解决这个问题

谢谢


共 (1) 个答案

  1. # 1 楼答案

    将位存储在字符串中有点奇怪,我曾经长时间存储一个数字,并对其进行逐位操作。它对你不起作用,因为你使用了更多的比特。如果它仍然是字符串,也许您可以编写一个简短的函数,在字符串的每个字节上使用AND运算符,如下所示:

    for (int i = 0; i<366; i++) {
        data .= (stringname[i] == binarystring[i]?"1":"0"); 
    }
    

    检查您的字符串,同时检查它是否等于二进制字符串(您想要的字符串和它),如果它们相等,则为concat 1,如果不相等,则为concat 0