当前位置: 首页 > 面试题库 >

比较字节值?

越文康
2023-03-14
问题内容

我很好奇为什么,当我将一个byte数组与一个值进行比较时…

boolean match = ((data[0] & 0xFF) == 0xFE);

…返回true,而…

boolean match = (data[0] == 0xFE);

…才不是?data是一个byte数组

data[0] = (byte) 0xFE;

问题答案:
boolean match = ((data[0] & 0xFF) == 0xFE);

比较整数,因为0xFF是整数,此表达式 会将您的字节
data[0]扩展为int并将括号内的内容与第二int进行比较0xFE(254)。至于你说的data[0](byte)0xFE,它将首先被调整为整数0xFE且相比于整数0xFE,所以这个作品。

boolean match = (data[0] == 0xFE);

将一个字节与int比较0xFE254

data[0] = (byte) 0xFE;

是一个字节(有符号),其值为-2

-2不等于254,因此这就是为什么在比较integer之前必须将data [0]作为字节比较或按比例放大到整数0xFE

一个更简单的比较可能是

boolean match = (data[0] == (byte)0xFE);


 类似资料:
  • 问题内容: 我有一个带有〜已知二进制序列的字节数组。我需要确认二进制序列是应该的。除之外,我还尝试了其他方法,但均无济于事。 问题答案: 在您的示例中,您具有: 在处理对象时,java中会比较 参考值 。您正在检查对by返回的数组的引用是否与所保存的引用相同,这当然永远不会正确。此外,数组类不会覆盖,因此其行为仅是比较参考值。 为了比较两个数组的 内容 ,Arrays类提供了静态数组比较方法。

  • 问题内容: 我只是想知道哪种方法更好(或者我是否缺少更好的方法)。我试图确定一个单词的第一个字母和最后一个字母是否相同,并且有两个明显的解决方案。 要么 据我了解,第一个只是提取字符串的片段并进行字符串比较,而第二个则是从任一端提取字符并将其作为字节进行比较。 我很好奇两者之间是否存在性能差异,并且是否有任何“可取的”方式来做到这一点? 问题答案: 如果用字母表示您的符文,请使用: 如果您的意思是

  • 问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran

  • 我想比较sha256的输出。Sum256(),它是带[]字节的[32]字节。 我得到一个错误不匹配类型[32]字节和[]字节。我无法将[]字节转换为[32]字节。 有办法做到这一点吗?

  • 问题内容: 在Java中,所有数字类型都从java.lang.Number扩展。拥有如下所示的方法是否是一个好主意: 我担心双精度2.00000不等于int2的情况。这些是否由内置的equals处理?如果没有,有什么办法可以在Java中编写一个简单的数字比较功能?(可以使用apachecommons这样的外部库) 问题答案: 一个是 从来没有 到。此外,a 与a不同。 Java具有原始类型和引用类

  • 主要内容:equals() 方法,equalsIgnoreCase() 方法,equals()与==的比较,compareTo() 方法字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等。 在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面详细介绍这 3 个方法的使用。 equals() 方法 equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相