Scala字节数组转换为数字

   1. 2个字节数组转换为整数

1 def bytes2uint8(_bytes: Array[Byte], _offset: Int): Int = {
2     val b0 = _bytes(_offset) & 0xff
3     return b0
4   }
5   
6   def bytes2sint8(_bytes: Array[Byte], _offset: Int): Int = {
7     val b0 = _bytes(_offset)
8     return b0
9   }
View Code

   2. 4个字节数组转换为整数

 1 def bytes2uint16(_bytes: Array[Byte], _offset: Int): Int = {
 2     var b0 = _bytes(_offset) & 0xff
 3     var b1 = _bytes(_offset + 1) & 0xff
 4 
 5     return ((b1 << 8) | b0).toShort & 0x0FFFF
 6   }
 7   
 8 //需要添加import java.nio.ByteBuffer
 9   def bytes2sint16(_bytes: Array[Byte], _offset: Int): Int = {
10       var _array: Array[Byte] = new Array[Byte](2)
11       _array(0) = _bytes(_offset + 1)
12       _array(1) = _bytes(_offset)
13       return  ByteBuffer.wrap(_array).getShort()
14   }
View Code

   3. 8个字节数组转换为整数   

 1 def bytes2uint32(_bytes: Array[Byte], _offset: Int): Long = {
 2         var b0 = _bytes(_offset + 0) & 0xff
 3         var b1 = _bytes(_offset + 1) & 0xff
 4         var b2 = _bytes(_offset + 2) & 0xff
 5         var b3 = _bytes(_offset + 3) & 0xff
 6         return ((b3 << 24) | (b2 << 16) | (b1 << 8) | b0).toLong & 0xFFFFFFFFL
 7     }
 8 
 9   def bytes2sint32(_bytes: Array[Byte], _offset: Int): Int = {
10     var b0 = _bytes(_offset) & 0xff
11     var b1 = _bytes(_offset + 1) & 0xff
12     var b2 = _bytes(_offset + 2) & 0xff
13     var b3 = _bytes(_offset + 3) & 0xff
14     return ((b3 << 24) | (b2 << 16) | (b1 << 8) | b0)
15   }
View Code

 

    4. 2个字节数组转换为布尔型(Bool)

    

1 def bytes2bool(_bytes: Array[Byte], _offset: Int): Boolean = {
2     var b0 = _bytes(_offset) & 0xff
3     var b1 = _bytes(_offset + 1) & 0xff
4 
5     return if (((b1 << 8) | b0) != 0) true else false
6   }
View Code

 

   5. 4个字节数组转换为浮点型(Float)

 1 import java.nio.ByteBuffer
 2 def bytes2float(_bytes: Array[Byte], _offset: Int): Double = {
 3 
 4     var _array: Array[Byte] = new Array[Byte](4)
 5 
 6     for (i <- 0 until 4) {
 7       _array(i) = _bytes(-i + _offset + 3)
 8     }
 9 
10     return ByteBuffer.wrap(_array).getFloat()
11   }
View Code

 

   6. 8个字节数组转换为Double

 1 import java.nio.ByteBuffer
 2 def bytes2real(_bytes: Array[Byte], _offset: Int): Double = {
 3 
 4     var _array: Array[Byte] = new Array[Byte](8)
 5 
 6     for (i <- 0 until 8) {
 7       _array(i) = _bytes(-i + _offset + 7)
 8     }
 9 
10     return ByteBuffer.wrap(_array).getDouble
11   }
View Code

 

   7. 8个字节数组转换为Long

1 import java.nio.ByteBuffer
2 def bytes2long(_bytes: Array[Byte], _offset: Int): Double = {
3     var _array: Array[Byte] = new Array[Byte](8)
4     
5     for (i <- 0 until 8) {
6       _array(i) = _bytes(-i + _offset + 7)
7     }
8     return ByteBuffer.wrap(_array).getLong
9   }
View Code

 

转载于:https://www.cnblogs.com/Wonderful-Life/p/9929146.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值