声明:本文章仅基于个人粗略整理总结,如有不足之处,欢迎指出。
1、16进制字符串改为byte
public static byte[] HexString2Buf(String src) {
int len = src.length();
byte[] ret = new byte[len / 2 + 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < len; i += 2) {
ret[i / 2] = uniteBytes(tmp[i], tmp[i + 1]);
}
return ret;
}
2、十六进制转2进制
方法一:
public static String hexStr2BinArr(String string) {
// TODO Auto-generated method stub
String s = "";
for (int i = 0; i < string.length(); i++) {
s += g(string.charAt(i));
}
return s;
}
private static String g(char charAt) {
// TODO Auto-generated method stub
switch (charAt) {
case '0':
return "0000";
case '1':
return "0001";
case '2':
return "0010";
case '3':
return "0011";
case '4':
return "0100";
case '5':
return "0101";
case '6':
return "0110";
case '7':
return "0111";
case '8':
return "1000";
case '9':
return "1001";
case 'A':
return "1010";
case 'B':
return "1011";
case 'C':
return "1100";
case 'D':
return "1101";
case 'E':
return "1110";
case 'F':
return "1111";
}
return null;
}
方法二:
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;
}
3、十六进制转Ascii码
public static String x16toString(String x16, String CharsetName) throws UnsupportedEncodingException {
if (x16 == null || "".equals(x16.trim())) {
return "";
}
String tempStr = "";
byte[] b = new byte[x16.length() / 2];
for (int i = 0; i < x16.length() / 2; i++) {
tempStr = x16.substring(i * 2, i * 2 + 2);
if (tempStr.equals("00")) {
tempStr = "30";
}
int temp = Integer.parseInt(tempStr, 16);
b[i] = (byte) temp;
}
String restr = new String(b, CharsetName);
return restr;
}
4、IEEE754浮点数的转换方法(十六进制String转浮点数)
String originalStrng="8FC20540";
Long a = Long.parseLong(originalStrng, 16);
Float a2 = Float.intBitsToFloat(a.intValue());
5、16进制byte数组转16进制String
public static String getBufHexStr(byte[] raw) {
if (raw == null) {
return null;
}
final StringBuilder hex = new StringBuilder(2 * raw.length);
for (final byte b : raw) {
hex.append(HEXES.charAt((b & 0xF0) >> 4)).append(
HEXES.charAt((b & 0x0F)));
}
return hex.toString();
}
6、十进制转16进制,高位在前地位在后
public static String tenTohexString(Integer var0) {
int var1 = 1;
int var2 = var0 >> 8;
int var3 = var0 & 255;
String var4 = Integer.toHexString(var2);
String var5 = Integer.toHexString(var3);
if (var4.length() > 2) {
do {
if (var1 > 1) {
var2 >>= 8;
}
var4 = Integer.toHexString(var2 >> 8);
var5 = var5 + Integer.toHexString(var2 & 255);
++var1;
} while (var4.length() > 2);
}
if (var4.length() < 2) {
var4 = "0" + var4;
}
if (var5.length() < 2) {
var5 = "0" + var5;
}
return (var5 + var4).toUpperCase();
}
/**
*
* @Title: decToHex
* @Description: 十进制转16进制,高位在前低位在后 -方法二
* @Author:
* @Version: V1.00 (版本号)
* @CreateDate:
* @Parameters: @param dec
* @Parameters: @return
* @Return String
* @Throws
*/
public static String decToHex(int dec){
String hex = "";
while(dec != 0) {
String h = Integer.toString(dec & 0xff, 16);
if((h.length() & 0x01) == 1)
h = '0' + h;
hex = hex + h;
dec = dec >> 8;
}
return hex.toUpperCase();//将小写字母转大写字母==》大写转小写.toLowerCase()
}
6、十六进制转Ascii码
public static String x16toString(String x16, String CharsetName) throws UnsupportedEncodingException {
if (x16 == null || "".equals(x16.trim())) {
return "";
}
String tempStr = "";
byte[] b = new byte[x16.length() / 2];
for (int i = 0; i < x16.length() / 2; i++) {
tempStr = x16.substring(i * 2, i * 2 + 2);
if (tempStr.equals("00")) {
tempStr = "30";
}
int temp = Integer.parseInt(tempStr, 16);
b[i] = (byte) temp;
}
String restr = new String(b, CharsetName);
return restr;
}