二进制开关工具类
来源:互联网 发布:js判断ios版本号 编辑:程序博客网 时间:2024/06/06 10:55
应用内含有太多开关,故选择用二进制码表达开关状态,感谢color_wind的文章,根据自己的业务逻辑做了一些小的修改,但在使用过程中发现一些小问题,也已修改。
/** *@className: BinarySwitchUtils *@description: *@author ZHANGKAIRUI *@date 2017/10/19 15:22 */public class BinarySwitchUtils { /** * 获取当前index状态,[0,1]; * * @param value 存储的开关数据int32 * @param index 开关索引 * @return 当前位置的值 */ public static boolean getSwitch(int value, int index) { return (value >> index & 1) == 1; } /** * 处理后的存储数据 int32 * * @param value 存储的开关数据int32 * @param index 开关索引 * @param set 开关状态 * @return 当前位置的值[0,1] */ public static int createSwitch(int value, int index, boolean set) { if (set) { value = 1 << index | value; } else { value = ~(1 << index) & value; } return value; } /** * 组装二进制开关串 * * @param switchArray * @return */ public static String createSwitches(Integer[] switchArray) { int data = 0; StringBuilder binaryBuilder = new StringBuilder(); for (int i = 0; i < switchArray.length; i++) { if (switchArray[i] != null) { boolean sign = switchArray[i] == 0 ? false : true; data = createSwitch(data, i, sign); } } //补齐最后一位的0 String binaryStr = Integer.toBinaryString(data); if (!StringUtils.isEmpty(binaryStr) && (binaryStr.length() != switchArray.length)) { Integer indexOffset = switchArray.length - binaryStr.length(); if(indexOffset > 0){ for (int i = 0; i < indexOffset; i++) { binaryBuilder.append("0"); } } } //补齐有效二进制 binaryBuilder.append(binaryStr); return binaryBuilder.toString(); }}
阅读全文
0 0
- 二进制开关工具类
- 二进制开关实现
- 二进制格式化工具类
- 二进制十六进制工具类
- Android工具类--开关软键盘类
- Android 通知开关状态工具类
- android 监听HOME键和开关屏的工具类
- window+mysql5.7打开二进制日志开关
- 二进制代码分析工具
- 二进制代码植入工具
- GCC二进制工具介绍
- 二进制比较工具 fstream
- 二进制比对工具
- 比较二进制工具哪家强?
- 开关和灯泡的对应关系-二进制编码
- POJ.3279 Fliptile (搜索+二进制枚举+开关问题)
- 在线制作滑动开关css3国外工具
- 开关
- 进程与线程的一个简单解释---阮一峰的网络日志
- android开发笔记之内存泄漏检测工具leakcanary
- Docker网络之二:自定义网桥
- 理解阻塞非阻塞与同步异步的区别
- ArcEngine 中把地图坐标转为屏幕坐标的方法
- 二进制开关工具类
- C语言提高-第20讲: 经典:查找的艺术(有序数组中插入数据)
- Java中null关键字的强转
- sequlize 简单操作
- Andorid 换肤框架AndSkin源码解析及优缺点
- [分治] 51Nod1555 布丁怪
- 特征匹配之Brute-Force 匹配和FLANN 匹配器
- 在HyperLedger Fabric中启用CouchDB作为State Database(区块链数据库)
- c语言操作符简介