java byte数组转short数组
// byte数组转short数组public static short[] byteArray2ShortArray(byte[] data) {short[] retVal = new short[data.length/2];for (int i = 0; i < retVal.length; i++)retVal[i] = (short) ((data[i * 2] & 0xff) | (data[i * 2 + 1] & 0xff) << 8);return retVal;}// short数组转byte数组public static byte[] ShortArray2byteArray(short[] s) {byte[] targets = new byte[s.length*2];for (int i=0;i<s.length;i++){int[] offsets = {0,8};targets[i*2] = (byte) ((s[i] >>> offsets[0]) & 0xff);targets[i*2+1] = (byte) ((s[i] >>> offsets[1]) & 0xff);}return targets;}
public static short bytesToShort(byte[] bytes) {return ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getShort();}
//byte数组转float数组public static float[] byteArray2FloatArray1(byte[] buffer) {float[] target = new float[buffer.length / 4];for (int i = 0; i < target.length; i++) {byte[] tmp_buf = {buffer[i * 4] , buffer[i * 4 + 1],buffer[i * 4 + 2],buffer[i * 4 + 3]};target[i] = ByteBuffer.wrap(tmp_buf).order(ByteOrder.LITTLE_ENDIAN).getFloat();}return target;}//float数组转byte数组public static byte[] FloatArray2byteArray(float[] buffer) {byte[] targets = new byte[buffer.length * 4];for (int i = 0; i < buffer.length; i++) {int fbit = Float.floatToIntBits(buffer[i]);targets[i * 4] = (byte) (fbit >> 0);targets[i * 4 + 1] = (byte) (fbit >> 8);targets[i * 4 + 2] = (byte) (fbit >> 16);targets[i * 4 + 3] = (byte) (fbit >> 24);}return targets;}
和0xff按位与相当于直接把某八位直接拿出来,结果默认还是之前的类型,比如short,八位拿出来其实默认前面还会有八个零,只不过不会输出显示,最后只要再强转byte就可以了。
逻辑或 ‘’|’'使用,可以达到字节的拼接。通常,intel x86电脑都是小端存储,所以要反着来。
-------------------------------------------------------分割线--------------------------------------------------------------------
c++可以直接通过short或者float类型读入,可以以此验证是否正确。
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {FILE *fp1 = fopen("C:\\Users\\Administrator\\Desktop\\48000-float-2.pcm","rb");int size = 1024;float *src_data1 = (float *)malloc(size);int ret1 = fread(src_data1, 1, size, fp1);for (int i=0;i<size;i++){cout << src_data1[i] <<" ";}return 0;
}
#include <stdlib.h>#include <iostream>
using namespace std;
int main() {FILE *fp1 = fopen("C:\\Users\\Administrator\\Desktop\\1.pcm","rb");int size = 8;short *src_data1 = (short *)malloc(size);int ret1 = fread(src_data1, 1, size, fp1);for (int i=0;i<size;i++){cout << src_data1[i] <<" ";}return 0;
}
参考链接:
https://www.cnblogs.com/wikiki/p/5340925.html
https://www.cnblogs.com/wikiki/p/5340920.html
https://blog.csdn.net/i6223671/article/details/88924481
https://www.cnblogs.com/a284628487/p/3907916.html
https://blog.csdn.net/Janix520/article/details/118181502
https://www.cnblogs.com/wi100sh/p/5171013.html
java byte数组转short数组相关推荐
- java byte转成int数组_Java任意长度byte数组转换为int数组的方法
前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...
- java byte short_java.lang.Short.byteValue()方法实例
java.lang.Short.byteValue()方法返回这个Short为一个字节的值. 声明 以下是java.lang.Short.byteValue()方法的声明 public byte by ...
- c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别
详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...
- java short数组转byte数组_byte数组如何转为short数组 (转)
最近在搞毕业设计,做的是有关语音识别的手机应用.在处理音频的过程中,发现需要用short数组处理音频,可能光用byte会越界.但是java读文件没有一次性读到short数组中的api,要么是一个一个读 ...
- java byte(字节_Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutpu......
/** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高.低字节之间的转换 * windows的字节序为低字 ...
- java byte数组 初始化_Java根据byte数组,生成文件
根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...
- java byte数组与String互转
java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...
- java byte数组操作_Byte数组操作方法集(Java.Net)
在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...
- java byte 遍历_java byte数组 相关知识点
下面是Java.util.Random()方法摘要 1.protected int next(int bits):生成下一个伪随机数. 2.boolean nextBoolean():返回下一个伪随机 ...
最新文章
- 吴恩达:人工智能寒冬不会到来,但我们太乐观了
- MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
- 运算符重载(加减运算符、前置加加(减减)后置加加(减减)运算符、赋值运算符、输入输出运算符、关系运算符、函数调用)
- 2019-03-09-算法-进化(从排序数组中删除重复项)
- 小波变换(wavelet transform)的通俗解释(三)
- 驱动调试(六)利用中断打印
- 《Java 并发编程实战》
- 计算机一级等级软件未来教育 手机版,计算机一级模拟考试软件手机版
- Abaqus 空间管路 自动化建模与分析
- MTK最新工具(刷机,写号,升级等)合集含工具源码
- 机器人领域的会议和期刊【补充】
- iOS-设置导航栏颜色(iOS8+)
- 算法实现- 数字转金额大写
- 第十七章_模型压缩、加速及移动端部署
- linux下搜索丢失分区,找回丢失的Linux分区拯救我的硬盘
- Scheme 语言概要(上)
- 六一儿童节,程序员写给女儿的一封信
- 移动文件需要计算机管理员权限,win7系统提示“需要管理员权限才能移动文件夹”的解决方法...
- excel打印预览在哪里_易打标条码标签设计打印软件下载_易打标条码标签设计打印软件绿色版下载...
- layui操作完成后刷新页面