您好我正在尝试了解范围编码器的工作方式,因此我找到了一个用于范围编码器的java程序,然后当我试图对我遇到的值0x00FFFFFFFFFFFFFFL的代码进行逆向工程时,如果任何人能够说明为什么我会很感激我们用这个值?
public class RangeCoder64
{
static final protected long Top=1L<<48;
static final protected long Bottom=1L<<40;
static final protected long MaxRange=Bottom;
protected long Low=0;
protected long Range=0x00FFFFFFFFFFFFFFL;
}
答案 0 :(得分:7)
0x表示值为十六进制。
L表示文字是一个长值。
基本上它只是一个很大的数字。 (十进制值为72057594037927935)
答案 1 :(得分:2)
0x00FFFFFFFFFFFFFFL
为0x
+ 00FFFFFFFFFFFFFF
+ L
0x
表示使用了十六进制
00FFFFFFFFFFFFFF
为十六进制
L
表示该值的大小为Long - 较小的数字不需要它(低于需要Long的大小)
如果您看到的值小于2的幂,则右侧将填充1,因此以十六进制右侧将填充F
s。通常,它将用作掩码,当and
带有值时,掩码只保留低位,在这种情况下,它将丢弃最高字节,并保留7个低字节。
答案 2 :(得分:0)
这将是该范围的价值。它看起来像7个字节。因此,由于某种原因,它限制了数量。