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

mCY*_*mCY 12 hex scala long-integer

随着Integer.toString(1234567, 16).toUpperCase() // output: 12D68能帮助到转换Int为十六进制字符串.

如何用Long做同样的事情?

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

Yuv*_*kov 15

您正在寻找RichLong.toHexString:

scala> 13690566117625L.toHexString
res0: String = c73955488f9
Run Code Online (Sandbox Code Playgroud)

而大写的变种:

scala> 13690566117625L.toHexString.toUpperCase
res1: String = C73955488F9
Run Code Online (Sandbox Code Playgroud)

编辑

这也适用于Intvia RichInt.toHexString:

scala> 42.toHexString
res4: String = 2a
Run Code Online (Sandbox Code Playgroud)


jwv*_*wvh 12

val bigNum: Long   = 13690566117625L
val bigHex: String = f"$bigNum%X"
Run Code Online (Sandbox Code Playgroud)

使用%X得到大写字母十六进制和%x,如果你想小写.

  • 确实是的.您还可以将标准十六进制名称添加到格式化输出:`f"$ myNum%#x"`结果为"0x1c4".简洁的方法是以许多不同的十六进制格式表达值. (2认同)

Mar*_*app 5

当您想要将值与前导零对齐时,我发现f"0x$int_val%08X"or可以很好地工作。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
Run Code Online (Sandbox Code Playgroud)