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

4
我有以下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)

1个回答

2
  1. 是的,这就是所需的全部。nio缓冲区上不需要进行任何清理。
  2. 确实,直接缓冲区没有后备数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接