如何在scala中将十六进制字符串转换为十六进制值?
我是scala新手,尝试了一些基本概念。我有一个整数值,我正试图使用以下命令将整数x转换为十六进制值如何在scala中将十六进制字符串转换为十六进制值?,scala,hex,Scala,Hex,我是scala新手,尝试了一些基本概念。我有一个整数值,我正试图使用以下命令将整数x转换为十六进制值 val y = Integer.toHexString(x) 该值以字符串格式提供十六进制数。但是,我希望将十六进制值作为值而不是字符串。我可以为它编写一些代码,但我想知道是否有一些直接命令可用于此操作?感谢您的帮助 编辑:例如,整数值为x=38 val y = Integer.toHexString(38) y是“26”,它是一个字符串。我想使用十六进制值0x26(而不是字符串)进行按位
val y = Integer.toHexString(x)
该值以字符串格式提供十六进制数。但是,我希望将十六进制值作为值而不是字符串。我可以为它编写一些代码,但我想知道是否有一些直接命令可用于此操作?感谢您的帮助
编辑:例如,整数值为x=38
val y = Integer.toHexString(38)
y是“26”,它是一个字符串。我想使用十六进制值0x26(而不是字符串)进行按位AND运算。hex只是以16为基数表示数值。您不需要十六进制表示的数值来对其执行位运算。在内存中,32位整数将以二进制格式存储,这是表示同一个数字的不同方式,只是以不同的基址存储。例如,如果您将数字4(二进制表示为0100,十六进制表示为0x4)作为scala中的变量,则可以使用
&
运算符按位对其进行操作:
scala> val y = 4
y: Int = 4
scala> y & 6
res0: Int = 4
scala> y & 2
res1: Int = 0
scala> y & 0x4
res5: Int = 4
按位或(|
)操作也是如此:
scala> y | 2
res2: Int = 6
scala> y | 4
res3: Int = 4
十六进制只是以基数16表示的数值。您不需要十六进制表示的数值来对其执行位运算。在内存中,32位整数将以二进制格式存储,这是表示同一个数字的不同方式,只是以不同的基址存储。例如,如果您将数字4(二进制表示为0100,十六进制表示为0x4)作为scala中的变量,则可以使用
&
运算符按位对其进行操作:
scala> val y = 4
y: Int = 4
scala> y & 6
res0: Int = 4
scala> y & 2
res1: Int = 0
scala> y & 0x4
res5: Int = 4
按位或(|
)操作也是如此:
scala> y | 2
res2: Int = 6
scala> y | 4
res3: Int = 4
您不需要将整数转换为“十六进制值”来执行逐位操作。您只需执行以下操作:
val x = 38
val y = 64
x | y
事实上,内存中没有“十六进制值”这样的东西。每个整数都存储在二进制中。如果要以十六进制写入整数文字,可以在其前面加上0x:
val x = 0x38 // 56 in decimal.
x | 0x10 // Turn on 5th bit.
您不需要将整数转换为“十六进制值”来执行逐位操作。您只需执行以下操作:
val x = 38
val y = 64
x | y
事实上,内存中没有“十六进制值”这样的东西。每个整数都存储在二进制中。如果要以十六进制写入整数文字,可以在其前面加上0x:
val x = 0x38 // 56 in decimal.
x | 0x10 // Turn on 5th bit.
你所说的价值是什么意思?Scala中没有十六进制数据类型。你能举例说明你想要什么吗?是否要将十六进制字符串转换为整数值?如果是这样,您可以执行val y=0xCAF#您的十六进制string@mohit在编辑中添加的示例。@YuvalItzchakov:Sorry int是错误编写的,已更正。:)要执行按位AND操作,您不需要;我不需要把它转换成十六进制。38和0x26都有相同的二进制表示法(顺便说一句,在您的示例中y是26而不是39),您所说的值是什么意思?Scala中没有十六进制数据类型。你能举例说明你想要什么吗?是否要将十六进制字符串转换为整数值?如果是这样,您可以执行val y=0xCAF#您的十六进制string@mohit在编辑中添加的示例。@YuvalItzchakov:Sorry int是错误编写的,已更正。:)要执行按位AND操作,您不需要;我不需要把它转换成十六进制。38和0x26都有相同的二进制表示(顺便说一句,在您的示例中y是26而不是39)