java中byte与bit之间的转换

使用场景:用于解析自定义协议,比如某一位代表一个状态

public class ByteUtils {/*** 获取一个字节的bit数组** @param value* @return*/public static byte[] getByteArray(byte value) {byte[] byteArr = new byte[8]; //一个字节八位for (int i = 7; i > 0; i--) {byteArr[i] = (byte) (value & 1); //获取最低位value = (byte) (value >> 1); //每次右移一位}return byteArr;}/*** 把byte转为字符串的bit** @param b* @return*/public static String byteToBitString(byte b) {return ""+ (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)+ (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)+ (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)+ (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);}/*** 获取一个字节第n位,* 思路:右移n位,与1** @param value* @param index* @return*/public static int get(byte value, int index) {return (value >> index) & 0x1;}/*** 获取一个字节的第m到第n位** @param value* @param start >0* @param end   >0* @return*/public static byte[] getBitRange(byte value, int start, int end) {byte[] rangeArray = new byte[end - start + 1];if (start > 7 || start < 0) {throw new RuntimeException("illegal start param");}if (end > 7 || end < 0) {throw new RuntimeException("illegal end param");}if (start > end) {throw new RuntimeException("start can not bigger than end");}if (start == end) {rangeArray[0] = (byte) ByteUtils.get(value, start);return rangeArray;}for (int i = end; i < start; i--) {rangeArray[i] = (byte) ByteUtils.get(value, start);}return rangeArray;}/*** 位字符串转字节* @param str* @return*/public static byte bitStringToByte(String str) {if(null == str){throw new RuntimeException("when bit string convert to byte, Object can not be null!");}if (8 != str.length()){throw new RuntimeException("bit string'length must be 8");}try{//判断最高位,决定正负if(str.charAt(0) == '0'){return (byte) Integer.parseInt(str,2);}else if(str.charAt(0) == '1'){return (byte) (Integer.parseInt(str,2) - 256);}}catch (NumberFormatException e){throw new RuntimeException("bit string convert to byte failed, byte String must only include 0 and 1!");}return 0;}

java中字节与位的转换相关推荐

  1. Java中字节数组和十六进制字符串之间的转换

    1. 概述 在本教程中,我们将看看将字节数组转换为十六进制字符串,反之亦然的不同方法. 我们还将了解转换机制并编写我们的实现来实现这一点. 2. 字节和十六进制之间的转换 首先,我们来看看字节和十六进 ...

  2. Java中字节Byte和位Bit的关系

    Java中字节容量关系 1TB=1024GB TB是千千兆 1GB=1024MB GB是千兆 1MB=1024KB MB是兆 1KB=1024Byte KB是千字节 注意:Byte的缩写是B也就是字节 ...

  3. java中的进制输出转换_java中进制的转换,Byte与16进制的转换

    java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十 ...

  4. Java中long和int互相转换,不改变原有数据

    Java中long和int互相转换,不改变原有数据 文章目录 Java中long和int互相转换,不改变原有数据 测试方法,及封装好的方法 封装好之后的方法 测试方法,及封装好的方法 @Test pu ...

  5. java 千位分隔符_如何在Java中设置千位分隔符?

    问题 如何在Java中设置千位分隔符?我有BigDecimal的String表示,我想设置千位分隔符并返回String. #1 热门回答(180 赞) 你可以使用格式功能","; ...

  6. 7.Java中变量的隐式转换以及强类型转换

    1.变量的相加,(变量的数据类型一致),直接运算即可!          结论:         Java中变量的 隐式转换(数据类型的默认类型提升)         byte,short,char- ...

  7. Java的编程基础-----Java中二进制与十进制的转换

    Java的编程基础-----Java中二进制与十进制的转换 文章目录

  8. Java中实现图片格式的转换

    小小的代码片段,在Java中实现图片格式的转换. 下边的示例中,使用了jpg->jpg,^_^我懒得修改了再测试了,我在实际使用的时候是从bitmap位图转换为了jpg. package com ...

  9. java中常用的位运算符及其应用

    1.位运算就是直接对整数在内存中的二进制位进行操作,针对与int类型进行操作 Java中常用的位运算符有以下7种:     &      |        ^   ~   <<   ...

最新文章

  1. 倒计时7天!博客之星虚位以待,Macbook等你来拿
  2. 好程序员分享做HTML5页面你要懂得这些
  3. PHP从远程mysql下载文件_PHP下载远程文件到指定目录
  4. (23/24) webpack实战技巧:如何在webpack环境中使用Json
  5. 使用 Directory.Build 来消除项目文件中的重复配置
  6. 算法(26)-最长系列
  7. linux图形界面为英文,Linux下“英文控制台 中文图形界面”的实现
  8. macOS Big Sur应用图标替换教程︳big sur图标包
  9. 【bzoj1222】[HNOI2001]产品加工 背包dp
  10. android课程设计时钟,单片机制作的电子钟(含闹钟功能)课程设计报告
  11. 热感传导不能证明经络的存在
  12. 用FSL进行VBM统计分析
  13. 基于pytorch训练的VGG16神经网络模型完成手写数字的分割与识别
  14. shader02-仿星空粒子
  15. 初识 Mac机子 关机命令
  16. SQlite3基本用法,使用sublime编辑器
  17. 阿里巴巴年报来了,一天收入6.85亿
  18. Pulp Fiction (低俗小说)
  19. 17.2.20 Sparsifying Neural Network Connections for Face Recognition 小感
  20. 安卓Android源码——ipcamera-for-android

热门文章

  1. python-使用python实现发普通邮件和带附件的邮件
  2. mac vim 添加颜色
  3. 国内银行接连爆出数据泄露事件,金融行业如何在源头处建立防线
  4. 无穷级数(一)常数项级数的概念与性质
  5. PMP备考建议这些点一定要记住
  6. Handler机制原理解析(一)
  7. 2022天翼数字科技生态大会 五大亮点看永不落幕的“5G物联生态城”
  8. 关于音频AEC\AGC\BSS\BF\DOA\NS\DER算法名词解释
  9. VMware 中的 ubuntu 22.04 无法识别SD卡问题的解决
  10. iOS关闭自动锁屏和距离感应