【问题标题】:How to convert Hex string to Hex value in scala?如何在scala中将十六进制字符串转换为十六进制值?
【发布时间】:2016-08-07 14:25:03
【问题描述】:

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

val y = Integer.toHexString(x)

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

编辑:例如整数值 x =38

val y = Integer.toHexString(38) 

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

【问题讨论】:

  • 值是什么意思? Scala 中没有十六进制数据类型。你能举一个你想要的例子吗?您想将十六进制字符串转换为整数值吗?如果是这样,您可以执行 val y = 0xCAF #your hex string
  • @mohit 编辑中添加的示例。
  • @YuvalItzchakov :对不起 int 写错了,已经更正了。 :)
  • 要进行按位与运算,您不需要将其转换为十六进制。 38 和 0x26 都具有相同的二进制表示(顺便说一句,在您的示例中 y 将是 26 而不是 39)

标签: scala hex


【解决方案1】:

十六进制只是以 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

【讨论】:

    【解决方案2】:

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

    val x = 38
    val y = 64
    x | y
    

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 1970-01-01
      • 2019-07-27
      • 2012-02-03
      • 2017-08-23
      • 2014-03-19
      • 2018-01-31
      • 2015-02-06
      相关资源
      最近更新 更多