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   }

   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   }

   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   }

    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   }

   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   }

   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   }

   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   }

原文地址:https://www.cnblogs.com/Wonderful-Life/p/9929146.html

时间: 2024-07-31 04:30:17

Scala字节数组转换为数字的相关文章

将字节数组转换为十六进制字符串

/**     * 将字节数组转换为十六进制字符串     *      * @param byteArray     * @return     */    private static String byteToStr(byte[] byteArray) {        String strDigest = "";        for (int i = 0; i < byteArray.length; i++) {            strDigest += byte

c++字节数组转换为整型

http://bbs.csdn.net/topics/360132089 BYTE data[4]={0x00,0x00,0xe6,0x00};//第一句UINT a11=*(UINT*)data;//第二句 al1表示成0x0000e600al1 = data[0]<<24 + data[1]<<16 + data[2]<<8 + data[3]; al1表示成0x00e60000al1 = data[3]<<24 + data[2]<<16 

Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ public static String StringToAsciiString(String content) { String result = ""; int max = content.length(); for (int i = 0; i < max; i++) { char c

android byte字节数组转换十六进制字符串(物联网开发总结)

想起前段时间的物联网的外包开发,经常遇到通过wifi接受的数据,要通过转换成十六进制字符串,或者最后又是十进制数据.都是根据双方的协议来开发的.那么我发送过去的数据也需要,经过特殊转换成byte字节发过去,硬件那边收到不至于乱码的数据. 1.硬件调试发给android这边是十六进制数据 原始数据:68 38 38 68 A 72 78 55 34 12 43 23 01 07 Y 00 00 00 0C 13 78 56 34 12 0C 3B 78 34 12 0C 26 78 56 34 1

C#结构体和字节数组的转换函数

在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到. 一般都会采用结构来表示字节数组.但结构与字节数组直接的转换实在很麻烦. 字节操作不但容易出错,而且每增加一个结构,就自己实现一遍,实在是烦不胜烦. 有没有简单的方法呢?当然有.可以采用非托管区的一些方法来实现. 首先,导入命名空间:System.Runtime.InteropServices; 定义结构的时候,要给结构指定特性. 如: //

字节数组与字符串(字符数组)的转换操作

1.默认编码方式转换: (1)string(char[])转换为byte[] byte[] byteArr = System.Text.Encoding.Default.GetBytes(char[]); byte[] byteArr = System.Text.Encoding.Default.GetBytes(string); byte[] byteArr = System.Text.Encoding.Default.GetBytes(char[], startindex, count);

字符串、字节数组、流之间的相互转换以及文件MD5的计算

1 using System; 2 using System.IO; 3 using System.Security.Cryptography; 4 using System.Text; 5 6 namespace myMethod 7 { 8 class lgs 9 { 10 static void Main() 11 { 12 Console.ReadKey(); 13 } 14 15 /// <summary> 16 /// 使用不同的编码格式将 字符串 → 字节数组 17 /// &l

[Arduino] 在串口读取多个字符串,并且转换为数字数组

功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; void setup() { //定义

数值类型与字节数组之间的相互转换

我们在上文 如何选择使用字符串还是数字呢? 中阐述了使用数值类型的好处,那么问题来了,如何在数值类型与字节数组之间相互转换呢? 我们先看看单个数值类型和字节数组之间的转换,我们以Integer类型为例: public static byte[] intToBytes(int x) {     ByteBuffer intBuffer = ByteBuffer.allocate(Integer.BYTES);     intBuffer.putInt(0, x);     return intBu