最近在搞毕业设计,做的是有关语音识别的手机应用。在处理音频的过程中,发现需要用short数组处理音频,可能光用byte会越界。但是java读文件没有一次性读到short数组中的api,要么是一个一个读short,要么读到byte数组后人工转为short数组。前者的行为和c++行为正好相反,主要是高低位问题,所以只能采取后者。

见代码:

publicshort[] byteArray2ShortArray(byte[] data,intitems) {short[] retVal=newshort[items];for(inti=0; i

retVal[i]=(short) ((data[i*2]&0xff)|(data[i*2+1]&0xff)<<8);returnretVal;

}

虽然如今代码执行是对的,但是注意的是,data元素取出来后要先和0xff按位与一下,否则出来的结果又三分之一不到都是不对的。具体什么原因,请大神给予指点!

data元素取出来后要先和0xff按位与一下,否则出来的结果又三分之一不到都是不对的。

##不熟悉JAVA,估计原因是这样的

Byte在执行位操作时,会隐式转换为带符号的Int类型,于是

首位是0的,值不变(0x7E => 0x0000007E)

首位是1的,值会变化(0xD3 => 0xFFFFFFD3)

如果直接拿首位是1的去进行位或操作,结果就会有问题

如果先执行一次&0xff,那么0xFFFFFFXX就会变为0x000000XX,保证结果的正确

java short数组转byte数组_byte数组如何转为short数组 (转)相关推荐

  1. PHP多维数组转为一维数组的方法实例

    1. 使用foreach function array_foreach($arr) {static $tmp = array();if (!is_array ($arr)) {return false ...

  2. java filestream 包,java.io.FileOutputStream.write(byte[] b)

    全屏 java.io.FileOutputStream.write(byte[] b)方法从指定的字节数组写入b.length个字节到该文件输出流. 声明 以下是java.io.FileOutputS ...

  3. android byte数组合并,byte数组 合并 与 截取(java)

    合并数组java /** * 合并byte[]数组 (不改变原数组) * @param byte_1 * @param byte_2 * @return 合并后的数组 */ public byte[] ...

  4. java float to byte_java float数组转byte数组,byte数组转float数组

    首先是float数组转byte数组 public static byte[] FloatArrayToByteArray(float[] data) { byte[] Resutl = {}; for ...

  5. Java基础笔记(入门,语法基础,流程控制,数组)

    Java语言入门 发展历程 三大技术体系 JavaSE 标准版 JavaEE 企业版 JavaME 嵌入式版 Java语言特点 简单性 健壮性 面向对象 分布式 多线程 动态性 可移植性(跨平台) J ...

  6. byte初始化并赋值_一位数组的定义、赋值和初始化.note

    当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...

  7. Java基础语法之变量、运算符、流程控制、数组和方法等基础语法

    变量.运算符.流程控制.数组和方法等基础语法.Java程序的执行流程,符合Java语法规则的程序. 1.1.1 Java初识 对Java进行简单介绍,Java程序如何执行,以及Java程序的结构. J ...

  8. java二维数组遍历后转为一维数组_java数组(一)

    数组的定义 数组是相同类型数据的有序集合. 简单理解就是:数组是由若干个相同类型的数据,按照一定的顺序组合而成的.数组中的每一个数据我们可以称为元素,每个元素可以通过索引(下标)来访问(获取). 数组 ...

  9. java二维数组遍历后转为一维数组_[基础篇]-基础知识整理-05-数组基本概念

    数组 数组是大部分编程语言所支持的数据结构,Java也支持数组,Java的数组是一种引用类型的变量,Java程序通过数组引用变量来操作数组,包括获取数组的长度,访问数组的值等. 数组的基本概念 数组是 ...

最新文章

  1. 接口与抽象类的使用选择
  2. 在首次发布三周之后,MLflow迎来了0.2版本
  3. 如何在keil下实现单工程多目标的设置(选择性自动编译)
  4. 要有自己的核心竞争力,应对时代变迁
  5. 1123. Is It a Complete AVL Tree (30)
  6. Exchange2003-2010迁移系列之十一,Exchange2010 OWA配置
  7. html中div的居中
  8. Codeforces Round #584 (Div. 1 + Div. 2)
  9. 次导数 次梯度 小结
  10. 【TWVRP】基于matlab A_star算法求解带时间窗和任务软时间窗多车场多车型车辆路径问题【含Matlab源码 1561期】
  11. YUV422转RGB并显示于Qlabel
  12. UI控件--时间选择(日期拾取器)
  13. 大势智慧参加腾讯云启「创见沙龙」,共探“全真互联网”新趋势
  14. 计算机一个小键盘按不出来怎么办,电脑小键盘打不出字怎么办?
  15. getValueFromEvent和shouldUpdate
  16. 5款超级无敌好用的电脑软件 建议收藏!
  17. 区块链技术运用在票据领域-票据链
  18. 【2022 CCPC 桂林站 日志】部分题解
  19. 从Uniswap Discord社区看DeFi链下治理的三大难题 |链捕手
  20. python修改excel背景色,基于python的excel背景颜色控制

热门文章

  1. 开我的世界服务器什么系统好,《我的世界》1.0服务器哪个好 1.0服务器地址大全...
  2. 1.用ps打开一张图片
  3. 中国教育十大发展趋势
  4. 英文翻译(三)——插入语
  5. Dyson Sphere Program 戴森球计划 个人心得
  6. Java 网络编程之 (解析URL)
  7. Excel表怎么快速移动整行、整列、整块区域数据
  8. DNF手游怎么在手游模拟器上玩使用教程
  9. JS获取url参数 返回一个对象
  10. c#中数组,ArrayList和List 三者的区别