2016-04-15 23 views
1

我是scala新手,正在尝试一些基本概念。我有我尝试使用以下命令如何将十六进制字符串转换为十六进制值在斯卡拉?

val y = Integer.toHexString(x) 

该值给我以字符串格式的十六进制数的整数x转换为十六进制值的整数值。不过,我想获得十六进制值作为一个值,而不是一个字符串。我可以为它编写一些代码,但是我想知道是否有一些直接的命令可以做到这一点?任何帮助表示赞赏。

编辑:例如具有发言权的整数值x = 38

val y = Integer.toHexString(38) 

y是 “26”,它是一个字符串。我想使用十六进制值0x26(不是字符串)来执行按位与操作。

+0

你是什么意思的价值? Scala中没有十六进制数据类型。你能举一个你想要的例子吗?你想将一个十六进制字符串转换为一个整数值吗?如果是这样,你可以做val y = 0xCAF#你的十六进制字符串 – mohit

+0

@mohit在编辑中添加示例。 – Goldengirl

+0

@YuvalItzchakov:抱歉int是错误的,它已被纠正。 :) – Goldengirl

回答

2

十六进制只是基数16中的一个数值的表示形式。您不需要十六进制表示中的数值来对其执行按位运算。在内存中,32位整数将以二进制格式存储,这与表示相同数字的不同方式相同,只是在不同的基础上。

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 

也是一样的按位OR(|)操作:例如,如果你有(以二进制表示,为0x4十六进制0100)中阶可变数字4,你可以在上面使用&运营商按位:

scala> y | 2 
res2: Int = 6 

scala> y | 4 
res3: Int = 4 
2

您不需要将整数转换为“十六进制值”来执行按位运算。你可以这样做:

val x = 38 
val y = 64 
x | y 

实际上,在内存中没有这样的“十六进制值”。每个整数都以二进制形式存储。如果你想写一个十六进制的整数文字,你可以用0x作为前缀:

val x = 0x38 // 56 in decimal. 
x | 0x10 // Turn on 5th bit. 
相关问题