scala到十六进制字符串中的Long/Int

scala到十六进制字符串中的Long/Int,scala,hex,long-integer,Scala,Hex,Long Integer,使用Integer.toString(1234567,16).toUpperCase()//输出:12D68可以帮助将Int转换为十六进制字符串 如何在长时间内实现同样的效果 Long.toString(13690566117625,16).toUpperCase()//但这将报告错误您要查找的: 和大写变体: scala> 13690566117625L.toHexString.toUpperCase res1: String = C73955488F9 编辑 这也可通过以下方式用于I

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

如何在长时间内实现同样的效果

Long.toString(13690566117625,16).toUpperCase()//但这将报告错误

您要查找的:

和大写变体:

scala> 13690566117625L.toHexString.toUpperCase
res1: String = C73955488F9
编辑 这也可通过以下方式用于
Int


你有几个错误。首先,数字
13690566117625
太大,无法放入
int
中,因此需要添加
L
前缀以指示它是
长的
文本。其次,
Long
没有采用基数的
toString
方法(与
Integer
不同)

解决方案:

val x = 13690566117625L
x.toHexString.toUpperCase
使用
%X
获取大写十六进制字母,如果需要小写字母,则使用
%X

我发现
f“0x$int\u val%08X”
f“0x$long\u 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

你犯了什么错误?如果您使用“
13690566117625L
”并在末尾加上一个L会怎么样?@kennytm,
Long.toString(13690566117625L,16).toUpperCase()
,它会说
错误:方法toString:()字符串的参数太多了。
您也可以这样做填充,例如用零填充到16的长度:
f“$bigNum%016X”
确实可以。您还可以将标准十六进制名称添加到格式化输出:
f“$myNum%#x”
结果为
0x1c4
。以多种不同十六进制格式表示值的简明方法。
val x = 13690566117625L
x.toHexString.toUpperCase
val bigNum: Long   = 13690566117625L
val bigHex: String = f"$bigNum%X"
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