您现在的位置是:首页 >

java中byte数组有什么用 java 整形数组、字节流的互转

火烧 2021-07-19 15:53:16 1037
java 整形数组、字节流的互转   前言  某些时候 我们想存储一些整形 长整形的内容到一些地方 当然你可能会用 分隔来存 比如     这种形式并没有错 但存以几个缺点   字符串格式 占用空间太

java 整形数组、字节流的互转  

  前言

  某些时候 我们想存储一些整形 长整形的内容到一些地方 当然你可能会用 分隔来存 比如

  

  这种形式并没有错 但存以几个缺点

  字符串格式 占用空间太多 在java里 以上字符串至少条占 * = Byte不管是读取 还是写入 都 要把字符串转化为整形或相反 大家都应该知道字符串的操作对性能的影响还是挺大的那么我们把它直接用整形的字节流来存储 会怎么样呢?

  不需要互转 节省开销空间 * = byte 效果也是很明显的问题来源

  我这里说下的我一个应用实例 也就是我开发这个网站(ZHUTIBO)的时候 右上解不是有个搜索 这是个全文检索 涉及过的朋友应该知道全文检索有一个不太乐观的地方

java中byte数组有什么用 java 整形数组、字节流的互转

  更新索引比较迟缓 因为影响性能 所以我们发表的文章不能及时被搜索到 然后我们就跟据需求重新写了一个全文检索功能 中间有一个问题就是快速存取一堆文档号 这就是问题的由来

  正题

  以下算法是本人改写自Java官网的RandomAccessFile类 性能上有一定的保障 大家可以放心使用

  view plain package service

  import java io EOFException import java io IOException

  public class TypeService {

  public int[] convertByteArrToIntArr(byte[] byteArr) {

  int remained = int intNum =

  remained = byteArr length % if(remained != ){ throw new RuntimeException() }

  //把字节数组转化为int[]后保留的个数

  intNum = byteArr length /

  // int[] intArr = new int[intNum]

  int ch ch ch ch for(int j= k= j<intArr length j++ k+= ){

  ch = byteArr[k] ch = byteArr[k+ ] ch = byteArr[k+ ] ch = byteArr[k+ ]

  //以下内容用于把字节的 位 不按照正负 直接放到int的后 位中

  if (ch < ){ ch = + ch } if (ch < ){ ch = + ch } if (ch < ){ ch = + ch } if (ch < ){ ch = + ch }

  intArr[j] = (ch << ) + (ch << ) + (ch << ) + (ch << ) }

  return intArr }

  public byte[] convertIntArrToByteArr(int[] intArr){

  int byteNum = intArr length * byte[] byteArr = new byte[byteNum]

  int curInt = for(int j= k= j<intArr length j++ k+= ){ curInt = intArr[j] byteArr[k] =   (byte) ((curInt >>> ) & xFF) byteArr[k+ ] = (byte) ((curInt >>> ) & xFF) byteArr[k+ ] = (byte) ((curInt >>> ) & xFF) byteArr[k+ ] = (byte) ((curInt >>> ) & xFF) }

  return byteArr

  }

  public static void main(String[] args) throws IOException {

  //      TypeService typeService = new TypeService() // //      int[] intArr = new int[]{ Integer MIN_VALUE} //      byte[] byteArr = nvertIntArrToByteArr(intArr) // //      File file = new File( C /Users/dell/Desktop/IT解决方案/aa txt ) //      RandomAccessFile r = new RandomAccessFile(file rw ) //      r write(byteArr) //      r close() // //      System out println( Arrays toString( nvertByteArrToIntArr(byteArr)) )

lishixinzhi/Article/program/Java/hx/201311/25539  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码