scala数据类型转换(Short、Float、Double转Byte)

数据类型转换

因为最近在写一个协议上报的项目,涉及到数据的转换字节,mark一下以后使用
(Double 8字节、float 4字节 、 Short 2字节 )
如果各位大佬有更合适的方法可以留言

Double => Bytes

  def doubleToBytes(data:Double):Array[Byte]={
    var result:Array[Byte] =new Array[Byte](8)
    var longData:Long = java.lang.Double.doubleToLongBits(data)
    for(i <- 0 until 8){
      result(i) = ((longData >> 8* i) & 0xff).toByte
    }
    result
  }

Bytes => Double

def bytesToDouble(data:Array[Byte]) :Double ={
    //先将数组位置转换
    import scala.collection.JavaConversions._
    var arr = ArrayBuffer[Byte]()
    data.foreach(x=>{
      arr.append(x)
    })
    java.util.Collections.reverse(arr)
    val dis = new DataInputStream(new ByteArrayInputStream(arr.toArray))
    val d = dis.readDouble()
    dis.close()
    d
  }

Short => Bytes

def short2Bytes(data:Short):Array[Byte]={
    val byteArray = new Array[Byte](2)
    for(i <- 0 until byteArray.length){
      val num = byteArray.length - 1 - i
      val offset = 16 - (i+1)*8
      byteArray(num) = ((data >> offset) &0xff).toByte
    }
    byteArray
  }

Float => Bytes

 def float2BytesUtil(data:Float):Array[Byte]={
    // 把float转换为byte[]  // 把float转换为byte[]
    val fbit = java.lang.Float.floatToIntBits(data)
    val arr = ArrayBuffer[Byte]()
    for(i <- 0 until 4){
      arr.append((fbit >> (24 - i *8)).toByte)
    }
    val dest = arr.toArray
    val len = arr.length
    for(i <- 0 until len/2){
      val temp = dest(i)
      dest(i) = dest(len - i - 1)
      dest(len - i - 1) = temp
    }
    dest
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值