Java 字节数组的验证
我试图用java编写一个函数,解析字节数组以确定它是否遵循某种模式。这种模式如下:Java 字节数组的验证,java,arrays,Java,Arrays,我试图用java编写一个函数,解析字节数组以确定它是否遵循某种模式。这种模式如下: 数组中的前两个字节是1和0 这两个字节后面是以0结尾的随机字节序列 此随机字节序列后面是另一个随机字节序列,该序列也以0结尾 此0之后没有字节 我很难思考如何实现这样一个功能的逻辑 假设您有一个初始字节数组,该数组已经初始化,长度大于2: byte[] array = ... 如果前两个字节分别为1和0,则: array[0] == 1 && array[1] == 0 然后说有两个随机的字节
我很难思考如何实现这样一个功能的逻辑 假设您有一个初始字节数组,该数组已经初始化,长度大于2:
byte[] array = ...
如果前两个字节分别为1和0,则:
array[0] == 1 && array[1] == 0
然后说有两个随机的字节序列,后面的必须以0结尾。这意味着我们只需要在数组中查找前两个索引之后的两个0
Collections.frequency(Arrays.asList(Arrays.copyOfRange(array, 2, array.length)), 0) == 2
还必须检查最后一个字节是否为0:
array[array.length - 1] == 0
具体问题是什么?你有规则来匹配模式。你如何处理这个问题?直接的。规则很清楚,你只需要把它翻译成一个程序。想一想是什么阻碍了你,请把问题说得更具体一些。如果我读对了OP,那么肯定有一个1,一个0,和两个(非零)字节序列,每个字节都以一个0结尾,没有更多。因此,您还需要检查
array[array.length-1]==0来满足所有条件,如果它们确实是我所理解的那样。@KevinAnderson捕捉得好!对collections.frequency的调用始终会为所需格式的任何字节输入数组返回值0。如何解决此问题?请尝试将(byte)0
作为参数传递,而不仅仅是0
,然后告诉我是否解决了此问题