使用BigInt从十六进制解析带符号数

时间:2016-06-20 14:04:54

标签: scala

我正在尝试使用BigInt解析带签名的号码。这是我的尝试

scala> -1.toHexString
res7: String = ffffffff

scala> val bigInt = BigInt(res7,16)
bigInt: scala.math.BigInt = 4294967295

有没有办法使用BigInt

轻松解析十六进制中带符号的数字?

2 个答案:

答案 0 :(得分:1)

如果您的十六进制字符串以Integer或Long开头生活 - 在将其转换为BigInt之前 - 将其解析为带有

的无符号数字
java.lang.Integer.parseUnsignedInt("ffffffff",16)  // Results in -1

java.lang.Long.parseUnsignedLong("ffffffffffffffff",16)  // Results in -1

答案 1 :(得分:0)

你必须告诉它你的号码有多长。没有它,只是说“ffffffff”是不明确的:作为Int它是-1,但是作为一个长期它是一个很大的正值:

 bigInt.toLong
 res48: Long = 4294967295

 bigInt.toInt
 res49: Int = -1