在Java中,此objc行等效于什么?
uint64_t lInt = 0xFFFFFFFF << 10;
lInt = ((uint64_t)mBytes[0] << 24) + ((uint64_t)mBytes[1] << 16);
我是这样写的,但我认为这是错误的。
long lInt = 0xFFFFFFFFL << 10;
lInt = ((mBytes[0] << 24) + (mBytes[1] << 16);
如评论所示:
“仅将uint64_t更改为long,其他所有内容都是相同的。long的容量可能不够用(因为Java中没有未签名的对象),但这是您所能得到的最好的。”
长的大小
直到Java 7(当前):long数据类型是64位二进制补码整数。带符号的long的最小值为-2 ^ 63,最大值为2 ^ 63-1。
Java 8:在Java SE 8和更高版本中,可以使用long数据类型表示无符号的64位long,其最小值为0,最大值为2 ^ 64-1
如果需要表示较大的整数,请使用BigInteger,这是一种非基本类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句