【问题标题】:comparing byte arrays比较字节数组
【发布时间】:2012-10-19 21:27:37
【问题描述】:

我有两个字节数组(在 Java 中)代表两个(可能是负数)数字。

我如何比较它们(即找出哪个更小/更大)?

目前,我只是通过将它们复活成两个java的int然后进行比较来比较它们。但是,如果字节数组中的一个表示负数而另一个表示正数,那么这会给出错误的结果。不可能判断最左边的位是符号还是数字的一部分,对吧?

谢谢

【问题讨论】:

  • 你的字节是从最重要到最不重要还是相反?如果从多到少:最左边的位不是第一个字节中的符号,而只是所有后续字节中数字的一部分吗?您的字节数是恒定的,还是变化的?
  • 如果都保证都是4字节,那么最左边的位总是符号位。

标签: java compare bytearray


【解决方案1】:

为什么要重新发明轮子?使用字节缓冲区:

int a = ByteBuffer.wrap(byteArrayA).getInt();
int b = ByteBuffer.wrap(byteArrayB).getInt();
System.out.println(a == b);

【讨论】:

  • 您可以使用 ByteBuffer 指定顺序。订单(ByteOrder.BIG_ENDIAN)
猜你喜欢
  • 2014-11-02
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 2011-07-03
  • 2011-07-23
  • 1970-01-01
相关资源
最近更新 更多