Java(字节)((localIntBuffer [srcIdx + col]>> 8)& 0xFF)

时间:2015-01-09 09:23:15

标签: java delphi

我讨厌自己提出这个问题,但我找不到任何解决方案。

(byte) ((localIntBuffer[srcIdx + col] >> 8) & 0xFF)

这段代码用Java编写,我想在Delphi中学习equals,这段代码是什么意思?

1 个答案:

答案 0 :(得分:6)

  • >>运算符已右移。
  • &运算符是按位和。
  • (byte)byte的演员。
  • []是数组索引运算符。

在Delphi中,这将是这样写的:

(localIntBuffer[srcIdx + col] shr 8) and $ff

不需要在Delphi中进行强制转换,因为所有整数类型都是赋值兼容的,and $ff确保值在正确的范围内。

有符号移位和无符号移位之间的区别在这里并不重要,因为您要从32位有符号整数中选取8-15位。好吧,我认为localIntBufferint的数组。如果你这么说,那会更好,而不是让我们猜测。认为只有代码就足够了,这是一个非常普遍的新手错误。对类型的了解也是至关重要的。

正如@TLama正确指出的那样,查阅文档是值得的:

另一种写这种方法的方法是使用LongRec中的SysUtils来挑选所需的字节:

LongRec(localIntBuffer[srcIdx + col]).Bytes[1]