Java程序对二进制流的读写

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

  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. }     

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

  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. }  

 

其它可能要用到的函数

  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值