二进制Binary、十进制Decimal、十六进制Hex、字节byte,位bit的转化
2017-04-04 09:12
375 查看
一、十进制数字转化为无符号的2进制字符串
三、十六进制字符串转化为十进制数字
五、byte转化为二进制也就是转化为bit
六、bits转化为byte
或:
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转化为十六进制
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(); }
相关文章推荐
- 字符串与十六进制与byte和十进制之间的转化
- byte字节转化十六进制
- Android中 二进制、十进制、十六进制串、byte数组、字符串、ASCII之间的相互转化
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- 字符串与十六进制与byte和十进制之间的转化
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- bit(位)、byte(字节)、字符、英文字母、中文
- Java实现byte数组与十六进制字符串互转化
- java进制转换器 图形用户界面 十进制及其相反数分别转化为二,四,八,十六进制
- 十进制转化十六进制
- C语言十进制转化为十六进制程序设计
- 将十进制转化为十六进制和二进制
- bit、byte、位、字节、汉字、字符之间的区别
- 十进制转化二.四,八.十六进制(使用递归)!!!
- 十进制转化为十六进制
- 十六进制字符串转化成字符串输出HexToStr(Delphi版、C#版)
- Java bit、byte、位、字节、汉字、字符
- bit ,byte,位,字节,汉字关系
- 字节、字、bit、byte的关系
- delphi中如何将string类型的字符串数据转化成byte[]字节数组类型的数据