arm-linux

http://armboard.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

    因为工作需要,需要操纵和读写一个Java的byte中每一位的值,所以昨天写了这么一个类。

    不知道有没有更好的方法,拿出来让大家看看吧!

源代码:

/**
 * @author 沈东良 Edward Shen<a href="mailto:shendl_s@hotmail.com">shendl_s@hotmail.com</a>
 * 2007-5-23 下午03:11:45
 *执行位操作
 *
 *
 */
public class BitUtil {
 /**
  * 把字节指定的位数设为1,不管原来该位是什么。
  * @param data
  * @param pos  从0开始
  */
 public static byte setByteBitOne(byte data,int pos){
  byte compare=(byte) Math.pow(2.0,pos);
  data=(byte) (data|compare);
  return data;
 }
 /**
  * 把字节指定的位数设为0,不管原来该位是什么。
  * @param data
  * @param pos
  */
 public static byte setByteBitZero(byte data,int pos){
  byte compare=(byte) ~(byte) Math.pow(2.0,pos);
  data=(byte) (data&compare);
  return data;
 }
 
 
 
    /**
     * 返回指定字节第几个位的数字,只可能是0或者1
     * @param data
     * @param pos   从0开始的位数
     * @return
     */
 public static int getByteBit(byte data,int pos){
  int bitData = 0;
  
  byte compare=(byte) Math.pow(2.0,pos);
  if((data & compare)==compare){
   bitData =1;
   
  }
  
  
  
  return bitData;
 
 }
 /**
  * 返回一个字节的每一位的数字
  * @param data
  * @return
  */
 public static byte[] getByteBits(byte data){
  byte[] results=new byte[8];
  for(int i=0;i<8;i++){
   results[i]=(byte) BitUtil.getByteBit(data, i);
   
  }
  
   
  
  
  
  return results;
 }

 /**
  *
  */
 public BitUtil() {
  /*
   *
   */
 }

 }
 

posted on 2007-05-24 08:50  arm-linux  阅读(179)  评论(0编辑  收藏  举报