使用Integer.toString(1234567, 16).toUpperCase() // output: 12D68
可以帮助将Int
转换为十六进制字符串。
如何用Long做同样的事情?
Long.toString(13690566117625, 16).toUpperCase() // but this will report error
答案 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