我正在尝试使用BigInt
解析带签名的号码。这是我的尝试
scala> -1.toHexString
res7: String = ffffffff
scala> val bigInt = BigInt(res7,16)
bigInt: scala.math.BigInt = 4294967295
有没有办法使用BigInt
答案 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