scala中的long / Int为十六进制字符串

时间:2016-09-15 07:52:22

标签: scala hex long-integer

使用Integer.toString(1234567, 16).toUpperCase() // output: 12D68可以帮助将Int转换为十六进制字符串。

如何用Long做同样的事情?

Long.toString(13690566117625, 16).toUpperCase() // but this will report error

5 个答案:

答案 0 :(得分:13)

您正在寻找RichLong.toHexString

scala> 13690566117625L.toHexString
res0: String = c73955488f9

大写的变体:

scala> 13690566117625L.toHexString.toUpperCase
res1: String = C73955488F9

修改

这也适用于Int RichInt.toHexString

scala> 42.toHexString
res4: String = 2a

答案 1 :(得分:10)

find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj

如果您想要小写,请使用 var myAddress = '' var NY = { lat: this.state.position.coords.latitude, lng: this.state.position.coords.longitude }; Geocoder.fallbackToGoogle(MY_KEY);//MY_KEY -- enabled the key googleMapAPI portal. // use the lib as usual let ret = Geocoder.geocodePosition(NY).then((res)=> { console.log(res) myAddress = res["0"].formattedAddress console.log(myAddress); this.setState({ MyAddress: myAddress }); }) console.log(this.state.MyAddress); 获取大写十六进制字母和val bigNum: Long = 13690566117625L val bigHex: String = f"$bigNum%X"

答案 2 :(得分:2)

您有几个错误。首先,数字13690566117625太大而无法容纳int,因此您需要添加L前缀以表明它是long字面值。其次,Long没有采用基数的toString方法(与Integer不同)。

解决方案:

val x = 13690566117625L
x.toHexString.toUpperCase

答案 3 :(得分:0)

当您要将值与前导零对齐时,我发现f"0x$long_val%16X"scala> val i = 1 i: Int = 1 scala> f"0x$i%08X" res1: String = 0x00000001 scala> val i = -1 i: Int = -1 scala> f"0x$i%08X" res2: String = 0xFFFFFFFF scala> val i = -1L i: Long = -1 scala> f"0x$i%16X" res3: String = 0xFFFFFFFFFFFFFFFF 的效果很好。

{{1}}

答案 4 :(得分:0)

使用 Scala 的好处是能够使用 Java 库。

所以,你可以实现:

import scala.util.Try
val longToHexString = Try(java.lang.Long.toString(13690566117625, 16)) // handle exceptions if any