Java程序对二进制流的读写

来源:互联网 发布:华为java编程规范 doc 编辑:程序博客网 时间:2024/06/16 12:47

把字符串和整数放到二进制流

[java] view plaincopy
  1. private void valuecpy(byte[] b,int start, int end,String strMsg){  
  2.     byte[] cs = strMsg.getBytes();  
  3.       
  4.     for(byte c : cs){  
  5.         b[start] = c;  
  6.         start++;  
  7.           
  8.         if(start>=end)  
  9.             break;  
  10.     }  
  11. }  
  12.   
  13. private void valuecpy(byte[] b,int start, int end,int nValue){  
  14.     b[start]  =(byte)(nValue&0x000000ff) ;  
  15.     b[start+1]=(byte)( (nValue&0x0000ff00) >> 8) ;  
  16.     b[start+2]=(byte)( (nValue&0x00ff0000) >> 16) ;  
  17.     b[start+3]=(byte)( (nValue&0xff000000) >> 24) ;         
  18. }     

从二进制流中取字符串和整数

[java] view plaincopy
  1. private int getIntValue(byte [] b,int s,int e)  
  2. {             
  3.     int nR=0;  
  4.     if(s+3<e)  
  5.     {             
  6.         nR = b[s] & 0xff;  
  7.         nR = nR + ( b[s+1]<<8  & 0x0000ff00 );  
  8.         nR = nR + ( b[s+2]<<16 & 0x00ff0000 );  
  9.         nR = nR + ( b[s+3]<<24 & 0xff000000 );              
  10.     }  
  11.   
  12.     return nR;  
  13. }  
  14.   
  15. private String getStrValue(byte[] b,int s,int e)  
  16. {  
  17.     byte[] tb=new byte[e-s+1];  
  18.     int i=0;  
  19.     for(byte ee:tb)  
  20.     {  
  21.         tb[i++]=0;  
  22.     }  
  23.       
  24.     i=0;  
  25.     for(byte ee:b)  
  26.     {  
  27.         if(i>=s && i<e)  
  28.         {  
  29.             tb[i-s]= b[i];  
  30.         }  
  31.         else if(i>=e)  
  32.         {  
  33.             break;                
  34.         }  
  35.         i++;  
  36.     }  
  37.     String r=new String(tb);      
  38.     return r;  
  39. }  

 

其它可能要用到的函数

[java] view plaincopy
  1. private void ZeroMem()  
  2. {  
  3.     int i=0;  
  4.     m_packet = new byte[1024];  
  5.     for(byte c:m_packet)  
  6.     {  
  7.         m_packet[i++]=0;  
  8.     }             
  9. }  

这样C语言中struct结构体变量可以对应到二进制流,而Java程序就可以从二进制流中取数据

0 0
原创粉丝点击