Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在scala中将十六进制字符串转换为十六进制值?_Scala_Hex - Fatal编程技术网

如何在scala中将十六进制字符串转换为十六进制值?

如何在scala中将十六进制字符串转换为十六进制值?,scala,hex,Scala,Hex,我是scala新手,尝试了一些基本概念。我有一个整数值,我正试图使用以下命令将整数x转换为十六进制值 val y = Integer.toHexString(x) 该值以字符串格式提供十六进制数。但是,我希望将十六进制值作为值而不是字符串。我可以为它编写一些代码,但我想知道是否有一些直接命令可用于此操作?感谢您的帮助 编辑:例如,整数值为x=38 val y = Integer.toHexString(38) y是“26”,它是一个字符串。我想使用十六进制值0x26(而不是字符串)进行按位

我是scala新手,尝试了一些基本概念。我有一个整数值,我正试图使用以下命令将整数x转换为十六进制值

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)