toHexString
public static String toHexString(int i) возвращает строковое представление целочисленного параметра в шестнадцатеричной форме целого числа без знака.
Если аргумент отрицательный, целое число без знака равно аргументу плюс 232, в противном случае оно равно аргументу; Преобразует значение в шестнадцатеричную (по основанию 16) числовую строку ASCII без ведущих нулей. Если значение беззнакового размера равно нулю, оно представлено нулевым символом «0» ('/u0030'), в противном случае первый символ в представлении беззнакового размера не будет нулевым символом. Используйте следующие символы в качестве шестнадцатеричных чисел:
0123456789abcdef
Эти символы варьируются от «/u0030» до «/u0039» и от «/u0061» до «/u0066». Если вам нужны заглавные буквы, вы можете вызвать метод String.toUpperCase() для результата:
Integer.toHexString(n).toUpperCase()
параметр:
i - целое число, которое будет преобразовано в строку.
возвращаться:
Строковое представление целочисленного значения без знака, выраженное в шестнадцатеричных аргументах (по основанию 16).
//Преобразуем строку в шестнадцатеричную кодировку
общедоступная статическая строка toHexString(String s)
{
Строка ул="";
для (int i=0;i<s.length();i++)
{
int ch = (int)s.charAt(i);
Строка s4 = Integer.toHexString(ch);
стр = стр + с4;
}
вернуть ул;
}
// Преобразуем шестнадцатеричную кодировку в строку
общедоступная статическая строка toStringHex(String s)
{
byte[] baKeyword = новый байт[s.length()/2];
for(int i = 0; i <baKeyword.length; i++)
{
пытаться
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
поймать (Исключение е)
{
е.printStackTrace();
}
}
пытаться
{
s = новая строка(baKeyword, "utf-8");//UTF-16le:Не
}
улов (исключение e1)
{
e1.printStackTrace();
}
вернуть с;
}
// Преобразуем шестнадцатеричную кодировку в строку
общедоступная статическая строка toStringHex(String s)
{
byte[] baKeyword = новый байт[s.length()/2];
for(int i = 0; i <baKeyword.length; i++)
{
пытаться
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
поймать (Исключение е)
{
е.printStackTrace();
}
}
пытаться
{
s = новая строка(baKeyword, "utf-8");//UTF-16le:Не
}
улов (исключение e1)
{
e1.printStackTrace();
}
вернуть с;
}
public static void main(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* Шестнадцатеричный набор символов.
*/
частная статическая строка hexString="0123456789ABCDEF";
/*
* Кодирование строк в шестнадцатеричные числа, подходящие для всех символов (включая китайские)
*/
общедоступное статическое строковое кодирование (String str)
{
//Получаем массив байтов на основе кодировки по умолчанию
байт[] байты=str.getBytes();
StringBuilder sb=new StringBuilder(bytes.length*2);
//Разлагаем каждый байт массива байтов в двухзначное шестнадцатеричное целое число
for(int i=0;i<bytes.length;i++)
{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
вернуть sb.toString();
}
/*
* Декодирование шестнадцатеричных чисел в строки, применимые ко всем символам (включая китайские)
*/
общедоступное статическое декодирование строк (строковые байты)
{
ByteArrayOutputStream baos = новый ByteArrayOutputStream(bytes.length()/2);
//Собираем каждое двухзначное шестнадцатеричное целое число в один байт
for(int i=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
вернуть новую строку (baos.toByteArray());
}
Второй метод:
Выведите указанный массив байтов на консоль в шестнадцатеричной форме.
общественный класс Util {
общественная утилита () {
}
/**
* Вывести указанный массив байтов на консоль в шестнадцатеричном виде
* Строка подсказки @param
* @param b byte[]
* @return void
*/
public static void printHexString(Stringhint, byte[] b) {
System.out.print(подсказка);
for (int i = 0; i <b.length; i++) {
Шестнадцатеричная строка = Integer.toHexString(b[i] & 0xFF);
если (hex.length() == 1) {
шестнадцатеричный = '0' + шестнадцатеричный;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}
/**
*
* @param b byte[]
* @return строка
*/
общественная статическая строка Bytes2HexString(byte[] b) {
Строка ret = "";
for (int i = 0; i <b.length; i++) {
Шестнадцатеричная строка = Integer.toHexString(b[i] & 0xFF);
если (hex.length() == 1) {
шестнадцатеричный = '0' + шестнадцатеричный;
}
ret += hex.toUpperCase();
}
вернуть возврат;
}
/**
* Объединить два символа ASCII в один байт;
* Например: «EF» --> 0xEF.
* @param src0 байт
* @param источник1 байт
* @return байт
*/
общедоступный статический байт uniteBytes (байт src0, байт src1) {
byte _b0 = Byte.decode("0x" + новая строка(новый байт[]{src0})).byteValue();
_b0 = (байт)(_b0 << 4);
byte _b1 = Byte.decode("0x" + новая строка(новый байт[]{src1})).byteValue();
байт ret = (байт)(_b0 ^ _b1);
вернуть возврат;
}
/**
* Преобразуйте указанную строку src в шестнадцатеричную форму, разделив каждые два символа
* Например: «2B44EFD9» --> byte[]{0x2B, 0x44, 0xEF, 0xD9}
* @param исходная строка
* @return byte[]
*/
общедоступный статический байт [] HexString2Bytes (String src) {
байт[] ret = новый байт[8];
byte[] tmp = src.getBytes();
for(int я=0; я<8; я++){
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
}
вернуть возврат;
}
}