如何读字节从输入流取bit作位运算(JAVA实现)
2008-06-13 14:14
423 查看
在以下是笔者在遇到取bit位运算,源码如下: package com.bit; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; public class BitTest { byte[] content = {(byte)9,(byte)111,(byte)120,(byte)32}; public String readBitYear(byte[] bt) throws IOException { byte[] tmp = bt; byte a = new DataInputStream(new ByteArrayInputStream(tmp)).readByte();; //int aa = (a & 0xfc); int aa = a >>2<<2; aa += 2000; String year = Integer.toString(aa); return year; } public String readBitMoth(byte[] bt) throws IOException { byte[] tmp = bt; int b = (int)new DataInputStream(new ByteArrayInputStream(tmp)).readShort(); int bb = b & 0x03C0; bb = bb >> 6; String mon = Integer.toString(bb); while (mon.length()<2) { mon = "0"+mon; } return mon; } public String readBitDay(byte[] bt) throws IOException { byte[] tmp = bt; int c = (int)new DataInputStream(new ByteArrayInputStream(tmp)).readShort(); int cc = c & 0x003E; cc = cc >> 1; String day = Integer.toString(cc); while (day.length()<2) { day = "0"+day; } return day; } public String readBithour(byte[] bt) throws IOException { byte[] tmp = bt; DataInputStream tmp_dis = new DataInputStream(new ByteArrayInputStream(tmp)); tmp_dis.readByte(); int d1 = tmp_dis.readShort(); int dd = d1 & 0x1f0; dd = dd >> 4; String hour = Integer.toString(dd); while (hour.length()<2) { hour = "0"+hour; } return hour; } public String readBitmin(byte[] bt) throws IOException { byte[] tmp = bt; DataInputStream tmp_dis = new DataInputStream(new ByteArrayInputStream(tmp)); tmp_dis.readShort(); int e = tmp_dis.readShort(); int ee = e & 0xfc0; ee = ee >> 6; String min = Integer.toString(ee); while (min.length()<2) { min = "0"+min; } return min; } public String readBitsec(byte[] bt) throws IOException { byte[] tmp = bt; DataInputStream tmp_dis = new DataInputStream(new ByteArrayInputStream(tmp)); tmp_dis.readShort(); int f = tmp_dis.readShort(); int ff = f & 0x3f; String sec = Integer.toString(ff); while (sec.length()<2) { sec = "0"+sec; } return sec; } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BitTest bittest = new BitTest(); String year = bittest.readBitYear(bittest.content); String month = bittest.readBitMoth(bittest.content); String day = bittest.readBitDay(bittest.content); String hour = bittest.readBithour(bittest.content); String min = bittest.readBitmin(bittest.content); String sec = bittest.readBitsec(bittest.content); System.out.println("year's :" + year); System.out.println("month's :" + month); System.out.println("day's :" + day); System.out.println("hour's :" + hour); System.out.println("min's :" + min); System.out.println("sec's :" + sec); }
相关文章推荐
- 如何用Java实现两个文件的异或运算
- java是如何实现位移运算的
- java里如何使用输入流和输出流实现读取本地文件里内容和写出到本地文件里
- 栈如何运用在四则运算中(JAVA实现)
- 如何在SpringMVC框架中利用Java反射机制和Javassist实现Java对象、属性、注解的动态创建生成
- 如何在Java中实现远程方法调用
- java中的缓存技术该如何实现
- 为什么Java中1000==1000为false而100==100为true;2+2=5如何实现?
- 用java实现的数独运算
- 如何用70行Java代码实现深度神经网络算法
- 【Java SE】如何用Java实现冒泡排序
- java中如何实现文件上传
- 使用java语言操作,如何来实现MySQL中Blob字段的存取
- java中日期如何进行加减运算???
- Java实现字符串四则运算(带小数点)
- 如何用Java实现啥夫曼编码
- 0708_Java如何设置输入流
- 如何实现springmvc+mybatis用多选框批量删除的功能Java代码
- Java中如何实现时间的加减
- Java之字节输入流和输出流