byte数组如何转为short数组 (转)
最近在搞毕业设计,做的是有关语音识别的手机应用。在处理音频的过程中,发现需要用short数组处理音频,可能光用byte会越界。但是java读文件没有一次性读到short数组中的api,要么是一个一个读short,要么读到byte数组后人工转为short数组。前者的行为和c++行为正好相反,主要是高低位问题,所以只能采取后者。
见代码:
publicshort[] byteArray2ShortArray(byte[] data, int items) {
short[] retVal =newshort[items];
for (int i =0; i < retVal.length; i++)
retVal[i] = (short) ((data[i *2]&0xff) | (data[i *2+1]&0xff) <<8);
return retVal;
}
虽然如今代码执行是对的,但是注意的是,data元素取出来后要先和0xff按位与一下,否则出来的结果又三分之一不到都是不对的。具体什么原因,请大神给予指点!
data元素取出来后要先和0xff按位与一下,否则出来的结果又三分之一不到都是不对的。
##不熟悉JAVA,估计原因是这样的
Byte在执行位操作时,会隐式转换为带符号的Int类型,于是
首位是0的,值不变(0x7E => 0x0000007E)
首位是1的,值会变化(0xD3 => 0xFFFFFFD3)
如果直接拿首位是1的去进行位或操作,结果就会有问题
如果先执行一次&0xff,那么0xFFFFFFXX就会变为0x000000XX,保证结果的正确
byte数组如何转为short数组 (转)的更多相关文章
- 怎样将short[]数组转换成byte[]数组
byte[] byteArray = Array.ConvertAll<short, byte>(shortArray, Convert.ToByte);
- Java将文件转为字节数组
Java将文件转为字节数组 关键字:文件,文件流,字节流,字节数组,二进制 摘要:最近工作中碰到的需求是,利用http传输二进制数据到服务器对应接口,需要传输userId, file(加密后)等一系列 ...
- 通过http URL 获取图片流 转为字节数组
通过http URL 获取图片流 转为字节数组 读取本地文件转为数组 /** * 获取 文件 流 * @param url * @return * @throws IOException */ pri ...
- [PHP]快速实现:将二维数组转为一维数组
如何将下面的二维数组转为一维数组. $msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'na ...
- (原创)结构体自动化转为char数组的实现
结构体自动化转换为char数组这个需求,来自于一个最近开发的一个项目,在项目开发过程中遇到一个小问题,需要将各种结构体拷贝到char数组中,这对于一个简单的结构体来说是很简单的事情,比如下面这个只有整 ...
- js限制输入数字能输入小数点,js定义数组,js往数组中添加数据,js将字符型转为数字型,除法结果保留两位小数——js小测:计算比赛得分
一个朋友跟我说要去给某个比赛算分: 规则:去掉最低分最高分求平均分: 最近在学习大数据可视化——图谱,用到js一些东西,所以今天就用js练练 用到知识点: js限制输入数字能输入小数点,js定义数组, ...
- short数组写进txt
short[] ssss=new short[gaoDeData.Length]; FileStream fs = new FileStream("E:\\123.txt", Fi ...
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- 第3章 Java数组(上): 一维数组和二维数组
3.数组及排序算法(2天) 3.1 数组的概述 2课时 3.2 一维数组的使用 3课时 3.3 多维数组的使用 3课时 3.4 数组中涉及到的常见算法 3课时 3.5 Arrays工具类的使用 3课时 ...
随机推荐
- 每天200亿次查询 – MongoDB在奇虎360【转】
100多个应用,1,500多个实例,每天200亿次查询 奇虎是中国最大的安卓移动发布平台.奇虎也是中国最顶尖的病毒软件防护公司,同时为网络以及移动平台提供产品.自从2011年成为MongoDB的用户之 ...
- Apache Kafka开发入门指南(2)
Apache Kafka目标是统一离线和在线处理,与Flume和Scribe相比较,Kafka在处理活动流数据方面更具优势.但是从架构的视野来看,Kafka与传统的消息系统(例如ActiveMQ或Ra ...
- css ::before和::after伪元素的用法
css ::before和::after伪元素的用法:http://blog.dimpurr.com/css-before-after/
- 为什么需要异步?why?来看一段代码。
为什么需要异步?why?来看一段代码. 问题1: for(var i=0;i<100000;i++){ } alert('hello world!!!'); 这段代码的意思是执行100...次后 ...
- LeetCode OJ 85. Maximal Rectangle
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and ...
- LeetCode OJ 123. Best Time to Buy and Sell Stock III
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- eclipse设置java虚拟机内存大小
设置java虚拟机大小可以让eclipse启动运行更快...... 在eclipse中点击window--preferences--java--Installed JREs. 然后看右边的框,鼠标点击 ...
- 复用TCP连接提升流媒体服务器之间流量转发效率
由于媒体推流客户端所在地域不同.所接入网络运营商不同.就近接入原则等因素,导致不同的视频推流客户端会推流至不同的流媒体服务器(本文主要针对目前WEB或手机的基于TCP的流媒体服务器),在某流媒体服务器 ...
- PeekMessage与GetMessage的对比
PeekMessage与GetMessage的对比相同点:PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中 的消息派发出去. 不同点:无论应用程序消息队 ...
- Strusts2--课程笔记5
数据验证: 输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证主要是通过Java代码进行验证. 分为以下四种情况: (1)手工编写代码,对所有Ac ...