【问题标题】:converting numbers (short, int, long, float, double,bigint) to byte array: Scala/Java将数字(short、int、long、float、double、bigint)转换为字节数组:Scala/Java
【发布时间】:2016-11-15 15:10:43
【问题描述】:

我按照 scala 代码将 (short、int、long、float、double、bigint) 转换为字节数组。

def getByteArray(value: Any, of_type: String) = {
    of_type match {
      case "short" => ByteBuffer.allocate(2).putShort(value.asInstanceOf[Short]).array()
      case "int" => ByteBuffer.allocate(4).putInt(value.asInstanceOf[Int]).array()
      case "long" => ByteBuffer.allocate(8).putLong(value.asInstanceOf[Long]).array()
      case "float" => ByteBuffer.allocate(4).putFloat(value.asInstanceOf[Float]).array()
      case "double" => ByteBuffer.allocate(8).putDouble(value.asInstanceOf[Double]).array()
      case "bigint" => BigInt(value.toString).toByteArray
    }
  }
  1. 这一切都需要吗?我是否需要在最后调用任何清理方法,例如clear()mark()reset(),以确保没有 ByteBuffer 泄漏

  2. 当我使用allocateDirect 方法时,它会抛出以下异常。那么,这是否意味着 allocateDirect 方法没有后备数组?

线程“main”中的异常 java.lang.UnsupportedOperationException 在 java.nio.ByteBuffer.array(ByteBuffer.java:994)

【问题讨论】:

    标签: java scala bytebuffer


    【解决方案1】:
    1. 是的,这就是我们所需要的。无需对 nio 缓冲区进行清理。
    2. 确实,直接缓冲区没有后备数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2014-02-05
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      相关资源
      最近更新 更多