用一个Int 存贮多个标志,还有什么办法?
2014-04-26 10:39
127 查看
假设要记录每个锻炼周期16天哪天完成锻炼
现用一个int来表示,去后16位,用01标志是否去锻炼过,1代表去过,0代表没有
public static byte[] intToBits(int val) {
byte[] bits = new byte[DEFALT_LEN];
for (int i = 0; i < bits.length; i++) {
bits[i] = (byte)((val>>i)& 0x1);
}
return bits;
}
public static int bitsToInt(byte[] bits) {
int value = 0;
for (int i = 0; i < bits.length; i++) {
value += bits[i]<<(i);
}
return value;
}
现用一个int来表示,去后16位,用01标志是否去锻炼过,1代表去过,0代表没有
import java.util.Arrays; public class IntBitUtil { private static int DEFALT_LEN = 2<<3; public static void main(String[] args) { int a = 56171; byte [] b = intToBits (a); int va = bitsToInt(b); System.out.println(Arrays.toString(b)); System.out.println(va); System.out.println(2<<3); } /** * <p> put 56171 * <p> get[1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1] */ public static byte[] intToBits(int val) { byte[] bits = new byte[DEFALT_LEN]; for (int i = 0; i < bits.length; i++) { bits[bits.length -1-i] = (byte)((val>>i)& 0x1); } return bits; } /** * <p> put[1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1] * <p> get 56171 */ public static int bitsToInt(byte[] bits) { int value = 0; for (int i = 0; i < bits.length; i++) { value += bits[i]<<(bits.length-1-i); } return value; } }
output:
[1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1] 56171 16
public static byte[] intToBits(int val) {
byte[] bits = new byte[DEFALT_LEN];
for (int i = 0; i < bits.length; i++) {
bits[i] = (byte)((val>>i)& 0x1);
}
return bits;
}
public static int bitsToInt(byte[] bits) {
int value = 0;
for (int i = 0; i < bits.length; i++) {
value += bits[i]<<(i);
}
return value;
}
相关文章推荐
- 除了用一个时间器来定时获得当前时间外。还有什么办法可以实时准确的获得当前时间?
- 一个设置多个类似标志的好办法 iOS 类似flag
- c语言:输出以下关键字的字节大小及输出一个地址:char,short,int,float,double,long
- mount.nfs: access denied by server while mounting 一个解决办法
- 一个IE 500错误的解决办法
- 为你的TextView添加一个边框的几种办法
- 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。解决办法
- rs返回值的问题:getInt方法返回的是数值“0”的解决办法
- DataGrid点击删除按钮弹出确认对话框一个好办法
- 定义一个ImageVIew出现警告的去除办法
- 【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。
- 应一个朋友的要求,贴上收藏的SQL常用分页的办法~~
- 《将一个字符串转换成datetime时,先分析该字符串以获取日期,然后再将每个变量放置到datetime对象中》的解决办法
- 构造一个通用的回调Thunk.(把回调函数指向对象的方法的办法)
- iOS开发 - "Cast from pointer to smaller type 'int' loses information” 解决办法
- 把一个int数组的数字从小到大排列(C#)
- Android中关于String转int遇到的java.lang.NumberFormatException: Invalid int: "5000.00"错解决办法
- shell 中生成一个文件的办法
- C++:怎样把一个int转成4个字节?
- ubuntu adsl 自动掉线的一个解决办法