Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
将数字(short、int、long、float、double、bigint)转换为字节数组:Scala/Java_Java_Scala_Bytebuffer - Fatal编程技术网

将数字(short、int、long、float、double、bigint)转换为字节数组:Scala/Java

将数字(short、int、long、float、double、bigint)转换为字节数组:Scala/Java,java,scala,bytebuffer,Java,Scala,Bytebuffer,下面是将(short、int、long、float、double、bigint)转换为字节数组的scala代码 def getByteArray(value: Any, of_type: String) = { of_type match { case "short" => ByteBuffer.allocate(2).putShort(value.asInstanceOf[Short]).array() case "int" => ByteBuffe

下面是将(short、int、long、float、double、bigint)转换为字节数组的scala代码

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
    }
  }
  • 这就是我们所需要的吗?我是否需要在最后调用任何清理方法,例如
    clear()
    mark()
    reset()
    ,以确保没有ByteBuffer泄漏

  • 当我使用
    allocateDirect
    方法时,它抛出以下异常。那么,这是否意味着
    allocateDirect
    方法没有支持数组

  • 线程“main”java.lang.UnsupportedOperationException中出现异常 位于java.nio.ByteBuffer.array(ByteBuffer.java:994)

  • 是的,这就是所需要的。不需要对nio缓冲区进行清理
  • 实际上,直接缓冲区没有后备数组