// 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数组相关推荐

  1. java byte转成int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  2. java byte short_java.lang.Short.byteValue()方法实例

    java.lang.Short.byteValue()方法返回这个Short为一个字节的值. 声明 以下是java.lang.Short.byteValue()方法的声明 public byte by ...

  3. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  4. java short数组转byte数组_byte数组如何转为short数组 (转)

    最近在搞毕业设计,做的是有关语音识别的手机应用.在处理音频的过程中,发现需要用short数组处理音频,可能光用byte会越界.但是java读文件没有一次性读到short数组中的api,要么是一个一个读 ...

  5. java byte(字节_Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutpu......

    /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高.低字节之间的转换 * windows的字节序为低字 ...

  6. java byte数组 初始化_Java根据byte数组,生成文件

    根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...

  7. java byte数组与String互转

    java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...

  8. java byte数组操作_Byte数组操作方法集(Java.Net)

    在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...

  9. java byte 遍历_java byte数组 相关知识点

    下面是Java.util.Random()方法摘要 1.protected int next(int bits):生成下一个伪随机数. 2.boolean nextBoolean():返回下一个伪随机 ...

最新文章

  1. 吴恩达:人工智能寒冬不会到来,但我们太乐观了
  2. MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
  3. 运算符重载(加减运算符、前置加加(减减)后置加加(减减)运算符、赋值运算符、输入输出运算符、关系运算符、函数调用)
  4. 2019-03-09-算法-进化(从排序数组中删除重复项)
  5. 小波变换(wavelet transform)的通俗解释(三)
  6. 驱动调试(六)利用中断打印
  7. 《Java 并发编程实战》
  8. 计算机一级等级软件未来教育 手机版,计算机一级模拟考试软件手机版
  9. Abaqus 空间管路 自动化建模与分析
  10. MTK最新工具(刷机,写号,升级等)合集含工具源码
  11. 机器人领域的会议和期刊【补充】
  12. iOS-设置导航栏颜色(iOS8+)
  13. 算法实现- 数字转金额大写
  14. 第十七章_模型压缩、加速及移动端部署
  15. linux下搜索丢失分区,找回丢失的Linux分区拯救我的硬盘
  16. Scheme 语言概要(上)
  17. 六一儿童节,程序员写给女儿的一封信
  18. 移动文件需要计算机管理员权限,win7系统提示“需要管理员权限才能移动文件夹”的解决方法...
  19. excel打印预览在哪里_易打标条码标签设计打印软件下载_易打标条码标签设计打印软件绿色版下载...
  20. layui操作完成后刷新页面

热门文章

  1. 【算法】零钱换整钱*
  2. Java语言基础--运算符
  3. 华为 HarmonyOS 系统一键升级来了!
  4. 如何提高自己的阅读速度
  5. google翻译 中文文本大量翻译成英文
  6. 2023最新PHP企业网站源码/稻草人PHP系统源码1.0.3版
  7. 认识unittest框架,学习unittest框架的使用
  8. 苹果手机能运行c语言吗,为什么苹果iPhone手机不使用Type-C接口,很多人都不知道...
  9. word去除自动编号的宏但是保留序号
  10. Spring AOP中的JDK代理和Cglib代理