另外,我感觉表达式应该是(short)((a << 8) + | (b & 0xff))吧

解决方案 »

  1.   

    文档上就是 * | ;
    + | ,* |  是什么意思?为什么文件中16进制 00 01
    readShort() 读出来的结果怎么是 256那?
      

  2.   

    说错了 01 00 是磁盘文件的16进制。 
    磁盘上的01 00 ,实际代表的应该是 0001,磁盘上应该存储时是顺序颠倒的 ,也就是1
    呀。为什么 readshor 读出来的 是 256我读的这个文件是wav文件,这两个字节存储声道数,0100,表示的是单声道。256可就不大对了。
      

  3.   

    big endian和little endian的问题吧
      

  4.   

    同意楼上的,由于储存读取顺序的规定不同,(x86cpu本身底层读取为倒序)java为了跨平台的需要,按照顺序方式来读取数据。
    所以01 00在java中是代表256的,“我读的这个文件是wav文件,这两个字节存储声道数,0100,表示的是单声道。256可就不大对了。”知道了java的原理,这个可以用算术方法解决了。