【问题标题】:Java byte array manipulationJava字节数组操作
【发布时间】:2011-12-29 22:26:54
【问题描述】:

我正在尝试选择字节数组中最后一个字节的低 4 位。这就是我之前在 PHP 中完成的方式,但我是 Java 新手。

$lower4bit = substr($bytes[19], -1);

//Convert the hex to decimal to get the offset value
$offset = hexdec($lower4bit);

//Select the value of the 4 bytes starting at the offset
$joinedArray = implode(array_slice($bytes, $offset, 4));

谁能指出我使用 Java 的正确方向?

【问题讨论】:

  • 我没有时间给出完整的答案,但请记住……在 PHP 中,“数组”是数组、列表、地图和各种其他东西。在 Java 中,它们并没有合二为一。
  • 即使在 PHP 中,这也是非常错误的做法。 $lower4bit = $bytes[19] & 0x0F;

标签: java bytearray one-time-password


【解决方案1】:

你可以像这样访问一个数组:

y = a[i];

你可以像这样找到数组的长度:

len = a.length;

您可以像这样隔离整数的最后 4 位:

y = x & 0xF;

这些应该足以构建您需要的代码。

【讨论】:

  • 谢谢。我跟着前两个,太好了。我现在有最后一个字节。不知道第三位是如何工作的。 0xF 有什么作用?
  • @Joseph:最后的声明是应用bitmask0xF 是一个十六进制常量,设置了 4 个 lsbs。
  • @OliverCharlesworth,我明白了:bitmask 的使用会派上用场。但是 x 是从哪里来的呢?
  • @fuzzy - 我想我只是用它来代表任意变量/表达式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2023-03-17
  • 2021-02-24
相关资源
最近更新 更多