二进制Binary、十进制Decimal、十六进制Hex、字节byte,位bit的转化
来源:互联网 发布:家居品牌网络推广 编辑:程序博客网 时间:2024/05/21 08:52
一、十进制数字转化为无符号的2进制字符串
String Binary = Integer.toBinaryString(88);二、进制字符串转化为十进制数字
Integer Decimal = Integer.valueOf("10001000", 2);
三、十六进制字符串转化为十进制数字
String hexString = Integer.toHexString(136);四、十进制转化为十六进制字符串
long parseLong = Long.parseLong("88", 16);Integer Hex= Integer.valueOf("88", 16); //两种方法都可以
五、byte转化为二进制也就是转化为bit
/** * Byte转二进制 */ public static String byteToBit(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); }
六、bits转化为byte
/** * bits转化为byte * * @param bits * 00100100,0101,00101111,11 * @return */public static byte[] byte2String(String bits) {// 假设bits 是01,10,011,00以,分隔的格式的字符串String[] bitsStr = bits.split(",");byte[] byteArray = new byte[bitsStr.length];for (int i = 0; i < byteArray.length; i++) {byteArray[i] = (byte) parse(bitsStr[i]);}return byteArray;}public static int parse(String str) {// 32位 为负数if (32 == str.length()) {str = "-" + str.substring(1);return -(Integer.parseInt(str, 2) + Integer.MAX_VALUE + 1);}return Integer.parseInt(str, 2);}
或:
public static char bitsToHex(int bit) { if(bit >= 0 && bit <= 9) { return (char)((int)'0'+bit); } else if(bit >= 10 && bit <= 15) { return (char)((int)'A'+bit-10); } return '-'; } public static String bytesToHex(byte[] bs) { if(bs == null) return "null"; StringBuilder sb = new StringBuilder(); for(byte b : bs ) { sb.append(bitsToHex((b>>4)&0x0F)); sb.append(bitsToHex(b&0x0F)); sb.append(" "); } return sb.toString(); }
七、byte转化为十六进制
/** * @param b 字节数组 * @return 16进制字符串 * @desc 将字节数组转换为16进制字符串 */ public static String Bytes2Hex(byte[] b) { String hexStr = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } hexStr += hex.toUpperCase(); } return hexStr; }也可以这样专转化:
/** * 字节数组转化为十六进制字符串 * @param bs 字节数组 * @return 字符串 */ public static String bytesToHex(byte[] bs) { if(bs == null) return "null"; StringBuilder sb = new StringBuilder(); for(byte b : bs ) { sb.append(bitsToHex((b>>4)&0x0F)); sb.append(bitsToHex(b&0x0F)); sb.append(" "); } return sb.toString(); } /** * bit转化为ASCII中的字符串 * @param bit * @return */ public static char bitsToHex(int bit) { if(bit >= 0 && bit <= 9) { return (char)((int)'0'+bit); } else if(bit >= 10 && bit <= 15) { return (char)((int)'A'+bit-10); } return '-'; }八、 十六进制字符串转化为字节数组
/** * 十六进制字符串转化为字节数组 * @param str * @param maxSize * @return * @throws Throwable */ public static byte[] bytesFromHex(String str, int maxSize) throws Throwable { ByteBuffer bb = ByteBuffer.allocate(maxSize); // fix : order bug bb.order(ByteOrder.LITTLE_ENDIAN); char[] src = str.toCharArray(); //mLogger.addLog(Utils.bytesToHex(src)); for(int i=0; i<src.length; i++) { if(src[i] == 0x20) continue; if(i+1 < src.length) { int hi = valueFromHex(src[i]); int lo = valueFromHex(src[i+1]); bb.put((byte) (hi*16+lo)); i++; } else { throw new Exception("failed to convert hex string."); } } if(bb.hasArray()) return bb.array(); return null; } public static int valueFromHex(char hex) throws Exception { if(hex >= '0' && hex <= '9') return (int) (hex-'0'); if(hex >= 'a' && hex <= 'f') return (int) (hex-'a'+10); if(hex >= 'A' && hex <= 'F') return (int) (hex-'A'+10); throw new Exception("failed to convert hex."); }九、十六进制字符串转化为二进制字符串
/** * 十六进制转化为二进制 * @param hexString 十六进制数据源 * @return 二进制数 */ public static String hexString2binaryString(String hexString) { if (hexString == null || hexString.length() % 2 != 0) return null; String bString = "", tmp; for (int i = 0; i < hexString.length(); i++) { tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString .substring(i, i + 1), 16)); bString += tmp.substring(tmp.length() - 4); } return bString; }十、二进制字符串转化为十六进制字符串
/** * 二进制数转化为十六进制 * @param bString 十六进制数 * @return 十六进制数 */ public static String binaryString2hexString(String bString) { if (bString == null || bString.equals("") || bString.length() % 8 != 0) return null; StringBuffer tmp = new StringBuffer(); int iTmp = 0; for (int i = 0; i < bString.length(); i += 4) { iTmp = 0; for (int j = 0; j < 4; j++) { iTmp += Integer.parseInt(bString.substring(i + j, i + j + 1)) << (4 - j - 1); } tmp.append(Integer.toHexString(iTmp)); } return tmp.toString(); }
1 0
- 二进制Binary、十进制Decimal、十六进制Hex、字节byte,位bit的转化
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- byte字节转化十六进制
- java十进制到二进制,十六进制的转化
- objective-c 二进制,十进制,十六进制的转化
- 二进制、八进制、十进制、十六进制之间的转化
- 二进制,八进制,十进制,十六进制之间的转化
- bit( 位)byte(字节)
- 二进制,十进制,十六进制互相转化
- bit、byte、位、字节、汉字的关系
- bit、byte、位、字节、汉字的关系
- 位bit 字节byte的关系解释
- 位bit 字节byte的关系解释
- bit、byte、位、字节、汉字的关系
- bit、byte、位、字节、汉字的关系
- bit、byte、位、字节、汉字的关系
- 位,字节,二进制,十六进制间的关系
- 百度echart的java封装
- 字符串去重复
- HDOJ 1394 Minimum Inversion Number(逆序数 + 线段树)
- shell中的通配符
- Retrofit2和RxJava2的使用介绍一
- 二进制Binary、十进制Decimal、十六进制Hex、字节byte,位bit的转化
- Web 编程II
- Qt中parent参数的作用
- Netty学习手记
- 从 BM 到 RBM
- STM32驱动科大讯飞语音合成芯片XFS3031CNP的若干问题
- 文档总结:linux中的系统服务控制
- 4.3
- Python快速搭建本机模块索引