Scala字节数组转换为数字
1. 2个字节数组转换为整数
def bytes2uint8(_bytes: Array[Byte], _offset: Int): Int = {
val b0 = _bytes(_offset) & 0xff
return b0
}
def bytes2sint8(_bytes: Array[Byte], _offset: Int): Int = {
val b0 = _bytes(_offset)
return b0
}
2. 4个字节数组转换为整数
def bytes2uint16(_bytes: Array[Byte], _offset: Int): Int = {
var b0 = _bytes(_offset) & 0xff
var b1 = _bytes(_offset + 1) & 0xff
return ((b1 << 8) | b0).toShort & 0x0FFFF
}
//需要添加import java.nio.ByteBuffer
def bytes2sint16(_bytes: Array[Byte], _offset: Int): Int = {
var _array: Array[Byte] = new Array[Byte](2)
_array(0) = _bytes(_offset + 1)
_array(1) = _bytes(_offset)
return ByteBuffer.wrap(_array).getShort()
}
3. 8个字节数组转换为整数
def bytes2uint32(_bytes: Array[Byte], _offset: Int): Long = {
var b0 = _bytes(_offset + 0) & 0xff
var b1 = _bytes(_offset + 1) & 0xff
var b2 = _bytes(_offset + 2) & 0xff
var b3 = _bytes(_offset + 3) & 0xff
return ((b3 << 24) | (b2 << 16) | (b1 << 8) | b0).toLong & 0xFFFFFFFFL
}
def bytes2sint32(_bytes: Array[Byte], _offset: Int): Int = {
var b0 = _bytes(_offset) & 0xff
var b1 = _bytes(_offset + 1) & 0xff
var b2 = _bytes(_offset + 2) & 0xff
var b3 = _bytes(_offset + 3) & 0xff
return ((b3 << 24) | (b2 << 16) | (b1 << 8) | b0)
}
4. 2个字节数组转换为布尔型(Bool)
def bytes2bool(_bytes: Array[Byte], _offset: Int): Boolean = {
var b0 = _bytes(_offset) & 0xff
var b1 = _bytes(_offset + 1) & 0xff
return if (((b1 << 8) | b0) != 0) true else false
}
5. 4个字节数组转换为浮点型(Float)
import java.nio.ByteBuffer
def bytes2float(_bytes: Array[Byte], _offset: Int): Double = { var _array: Array[Byte] = new Array[Byte](4) for (i <- 0 until 4) {
_array(i) = _bytes(-i + _offset + 3)
} return ByteBuffer.wrap(_array).getFloat()
}
6. 8个字节数组转换为Double
import java.nio.ByteBuffer
def bytes2real(_bytes: Array[Byte], _offset: Int): Double = { var _array: Array[Byte] = new Array[Byte](8) for (i <- 0 until 8) {
_array(i) = _bytes(-i + _offset + 7)
} return ByteBuffer.wrap(_array).getDouble
}
7. 8个字节数组转换为Long
import java.nio.ByteBuffer
def bytes2long(_bytes: Array[Byte], _offset: Int): Double = {
var _array: Array[Byte] = new Array[Byte](8) for (i <- 0 until 8) {
_array(i) = _bytes(-i + _offset + 7)
}
return ByteBuffer.wrap(_array).getLong
}
Scala字节数组转换为数字的更多相关文章
- C语言字节数组转换为基本数据类型
首先,必须明确基本类型在不同环境下字节的大小 这里用到了unsigned char:1 int:4 double:8 自己主要想用的是将字节数组转换为int型,double型 具体来说,将接收到的 ...
- java中把字节数组转换为16进制字符串
把字符串数组转换为16进制字符串 import java.security.MessageDigest; public class StringUtil { public StringUtil() { ...
- C#使用内存和指针方式将字节数组转换为Bitmap
/// <summary> /// 指针方式转 /// </summary> /// <param name="Width">图像的宽</ ...
- c++字节数组转换为整型
http://bbs.csdn.net/topics/360132089 BYTE data[4]={0x00,0x00,0xe6,0x00};//第一句UINT a11=*(UINT*)data;/ ...
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ publ ...
- mina 字节数组编解码器的写法 II
I 里面的写法不够严谨,这也是我之前说它简陋的主要原因,下面来个更加严谨.完整一点儿的: ByteArrayEncoder.java package org.bruce.mina.cpp.codec; ...
- java对获取的字节数组进行处理
java对获取的字节数组bytes[]进行处理: 第一种,直接将该字节数组转换为字符串(部分): String content = ,); //从位置0开始获取2个字节 这样,对获取的数据报进行全部转 ...
- 【Java】字节数组转换工具类
import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...
- 字符串、字节数组、流之间的相互转换以及文件MD5的计算
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace myMe ...
随机推荐
- C语言面对对象设计模式汇编
面向对象发展到今天,已经出现了许许多多优秀的实践.方法和技术.很多的技术都能够有效的提高软件质量.IBM上的<面向对象软件开发和过程>系列文章对面对对象设计从如下层面进行了详细的介绍:代码 ...
- 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)
A. Alien Sunset 暴力枚举答案即可. #include<cstdio> int n,i,mx; struct P{ int h,r,t; bool night(int x){ ...
- Promise 用法
Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 Promise的构造函数接收一个参数,是 ...
- Git&Version Control
Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内 ...
- Node.js 开发
Node.js不必介绍,已经太火爆了.简单说是用Javascript开发Web服务端,基于Google V8引擎,单线程.不多说从零开始Windows平台下的Node.js的开发之旅. 环境工具为先 ...
- AKA “Project” Milestone
Homework 6 (60 points)Due Thursday, April 25th at 11:59pm (via blackboard) AKA “Project” Milestone # ...
- flutter 学习零碎知识点01
1.Expanded组件 占满可用空间 -----可以到达类似flex布局中 第一列占用大量空间,所以它必须包装在Expanded widget中. 写死的高度改成Expanded自动撑满屏幕如果还 ...
- Redis集群概述
Redis Cluster与Redis3.0.0同时发布,以此结束了Redis无官方集群方案的时代,目前,Redis已经发布了3.0.7版本. redis cluster是去中心化,去中间件的,也就是 ...
- Python加密保护-对可执行的exe进行保护
Python 是一种面向对象的解释型计算机程序设计语言,Python 语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序. 在计算机内部,Python解释器把源代码转换成称为字节的中间形式, ...
- Freeswitch配置之sofia
SIP模块 - mod_sofia SIP 模块是 FreeSWITCH的主要模块. 在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint.FreeSWITH支持很多的 End ...