知识大全 java 整形数组、字节流的互转

Posted 字节

篇首语:识字粗堪供赋役,不须辛苦慕公卿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java 整形数组、字节流的互转相关的知识,希望对你有一定的参考价值。

  前言

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

  

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

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

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

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

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

  正题

  以下算法是本人改写自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)) )

cha138/Article/program/Java/hx/201311/25539

相关参考

知识大全 Java中数组的返回

Java中数组的返回  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  假定我们现在想写一个方法同时

知识大全 怎样用Jvm处理Java数组

怎样用Jvm处理Java数组  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记得vamcily曾

知识大全 Java静态与动态数组特点分析

Java静态与动态数组特点分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  平常我们接触到的大

知识大全 Java中数组的转型和范型

Java中数组的转型和范型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天写代码遇到一个奇怪

知识大全 自己编写的Java数组操作工具

自己编写的Java数组操作工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  看到网上的一段关于

知识大全 分析Java集合框架及数组的排序

分析Java集合框架及数组的排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 java读取文件内容写入到byte数组中

  有时候我们需要将读取文件的内容到一个byte[]数组中然后对这个数组进行一些修改这时我们可以借助于ByteArrayOutputStream这个类来实现  ByteArrayOutputStrea

知识大全 用数组解决JAVA中的大数问题-以求阶乘为例

用数组解决JAVA中的大数问题-以求阶乘为例!  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  impor

知识大全 利用PHP实现短域名互转

利用PHP实现短域名互转  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何使用PHP实现短域名互转

知识大全 C# 中英文符号互转

C#中英文符号互转  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#code  ///转全角的