您的问题是
parseLong()不能处理二进制补码-它期望符号以’-‘的形式出现。
如果您正在开发CDC配置文件,则可以轻松使用
long l = new BigInteger("FFFFFFFFFFFFFFFF", 16).longValue()
但是CLDC配置文件没有该类。在那里,执行所需 *** 作的最简单方法可能是将长整型分割成两半,然后重新组合。这有效:
long msb = Long.parseLong("FFFFFFFF", 16);long lsb = Long.parseLong("FFFFFFFF", 16);long result = msb<<32 | lsb;
更新
从Java
8开始,您可以使用
parseUnsignedLong():
long l = Long.parseUnsignedLong("FFFFFFFFFFFFFFFF", 16);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)