Есть много способов преобразовать бинарную систему в Java. Среди них есть классы упаковки для общего основного бинального восьмидесятилетнего десятичного десятичного значения и т. Д., Которые не необходимо реализовать с помощью алгоритмов Two-Out. Детали следующие:
Прежде всего, самые простые бинарные методы преобразования:
Преобразовать десятичное в шестнадцатеричное:
String integer.tohexstring (int i)
Преобразовать десятичное в восьми
String integer.tooctalstring (int i)
Преобразовать десятичное в двоичное
String integer.tobinarystring (int i)
Преобразовать шестнадцатеричную в десятичное значение
Integer.valueof ("ffff", 16) .toString () // Невозможно обрабатывать префикс 0x
Преобразовать восьми в десятичный
Integer.valueof ("76", 8) .toString () // Префикс 0 может быть обработан как бинарный к десятичным
Integer.valueof ("0101", 2) .toString ()
Есть ли способ напрямую преобразовать 2, 8, шестнадцатеричный в десятичный?
Java.lang.integer Class
Parseint (String S, Int Radix)
Используйте кардинальность, указанную вторым параметром, чтобы разобрать параметр строки в подписанное целое число.
Примеры от JDK:
Parseint ("0", 10) возвращает 0
Parseint ("473", 10) возвращает 473
Parseint ("-0", 10) возвращает 0
Parseint (" -ff", 16) возвращает -255
Parseint ("1100110", 2) возвращает 102
Parseint ("2147483647", 10) возвращает 2147483647
Parseint (" -2147483648", 10) возвращает -2147483648
Parseint ("2147483648", 10) THROWSA NumberFormateXception
Parseint ("99", throwsa numberformatexception
Parseint ("kona", 10) Throwsa numberformatexception
Parseint ("Kona", 27) возвращает 411787
Как написать бинарное преобразование (два, восемь, шестнадцать) без алгоритма
Integer.TobinaryString
Integer.toOctalString
Integer.tohexstring
Затем введите преобразование байтовых и шестнадцатеричных чисел в Java
Принцип анализа:
Байт в Java состоит из 8 битов, а шестнадцатеричный - государство в 16, которое представлено 4 битами, потому что 24 = 16. Таким образом, мы можем преобразовать байт в два шестнадцатеричных символа, то есть преобразовать высокие 4 и низкие 4 цифры в соответствующие шестнадцатеричные символы и объединить эти две шестнадцатеричные строки, чтобы получить шестнадцатеричную строку байта. Точно так же противоположное преобразование также преобразует два шестнадцатеричных символа в один байт.
В Java есть две основные идеи для преобразования байтов и шестнадцатеричной:
1. Когда бинарный байт преобразуется в шестнадцатеричную работу, выполните работу «&» высокого уровня байта и 0xf0, а затем сдвигайте левые на 4 бита, чтобы получить шестнадцатеричный A байта высокого уровня; Выполните работу «&» байтового низкого и 0x0f, чтобы получить шестнадцатеричный B низких и цифр, и собрать два шестигранных числа в кусок AB, который является шестнадцатеричным представлением байта.
2. Когда шестнадцатеричный к бинарным байтам перемещайте десятичное число, соответствующее шестнадцатеричному персонажу вправо 4, чтобы получить высокий байт A; Сделай "|" Работа десятичного числа B и A аспекта -подразделения, соответствующего низкому байту, чтобы получить шестнадцатеричный бинарный байт
Одна из функций преобразования заключается в следующем:
/** * * * @param Bytes * @return Преобразование двоичного в шестнадцатеричное вывод символов */</span> частная статическая строка hexstr = "0123456789abcdef"; // Глобальная публичная статическая строка BinaryToHexString (byte [] bytes) {String result = ""; String hex = ""; for (int i = 0; i <bytes.length; i ++) {// байты на 4 бита выше <strong> hex = string.valueof (hexstr.charat ((bytes [i] & 0xf0) >> 4)); </strong> // байты на 4 бита ниже <strong> hex += string.valueof (hexstr.charat (bytes [i] & 0x0f)); </strong> result += hex; } return Result; }/** * * * @param hexstring * @return Преобразуйте шестнадцатеричный массив в байт */public static byte [] hexstringtobinary (string hexstring) {// Длина Hexstring округлена на 2, так как длина байтов int len = hexstring.length ()/2; байт [] байты = новый байт [len]; Byte High = 0; // Byte High четырехбитовый байт low = 0; // Byte Low Four-Bit for (int i = 0; i <len; i ++) {// Передача в правые четыре бита, чтобы получить высокий бит = (byte) ((hexstr.indexof (hexstring.charat (2*i))) << 4); low = (byte) hexstr.indexof (hexstring.charat (2*i+1)); байты [i] = (байт) (высокий | низкий); // высокий статус или операция} return Bytes; }} Есть также аналогичный метод:
<span style = "font-size: 14px;">* преобразовать byte [] в шестнадцатеричную строку. Здесь мы можем преобразовать байт в int, а затем использовать Integer.tohexstring (int), чтобы преобразовать в шестнадцатеричную строку.
* @param src byte [] data * @return Hex String */ public Static String ByteSteSteString (byte [] src) {StringBuilder stringBuilder = new StringBuilder (""); if (src == null || src.length <= 0) {return null; } for (int i = 0; i <src.length; i ++) {int v = src [i] & 0xff; String hv = integer.tohexstring (v); if (hv.length () <2) {stringbuilder.append (0); } stringBuilder.append (hv); } return stringBuilder.toString (); } / ** * Преобразовать шестнадцатеричную строку в байт [] * @param hexstring hex string * @return byte [] * / public static byte [] hexstringtobytes (string hexstring) {if (hexstring == null || hexstring.equals (")) {return null; } hexstring = hexstring.touppercase (); int length = hexstring.length () / 2; char [] hexchars = hexstring.thararray (); byte [] d = новый байт [длина]; for (int i = 0; i <length; i ++) {int pos = i * 2; d [i] = (byte) (chartobyte (hexchars [pos]) << 4 | chartobyte (hexchars [pos + 1])); } return d; } / ** * Преобразовать char в byte * @param c char * @return byte * / private byte chartobyte (char c) {return (byte) "0123456789abcdef" .indexof (c); } </span>Два метода похожи, обратите внимание здесь.
Выше приведено строка, которая преобразует байт [] в шестнадцатеричную. Обратите внимание, что B [i] & 0xff выполняет расчет байта и 0xff, а затем использует integer.tohexstring для получения шестнадцатеричной строки. Вы можете увидеть это
B [i] & 0xff Operation остается все еще Int, так зачем вам нужно выполнить операцию Int с 0xff? Direct Integer.tohexstring (b [i]);, нельзя заставить байт быть преобразованным? Ответ нет.
Причина в:
1. Размер байта составляет 8 битов, а размер int - 32 бита
2. Система Java с двумя частями использует комплемент
Следовательно, когда отрицательные числа и с отрицательными числами, отрицательные числа автоматически заполнят 1, что приведет к ошибкам
0xff - это пластическая хирургия по умолчанию, поэтому, когда участвуют байт и 0xff, байт будет сначала преобразован в операцию пластической хирургии, поэтому высокие 24 бита в результате всегда будут очищены 0, поэтому результат всегда - то, что мы хотим.
Есть некоторые онлайн -методы сводки:
Преобразовать строку в метод шестнадцатеричной строки 1:
/ *** Преобразовать строку в шестнадцатеричную строку*/ public Static String Str2Hexstr (String Str) {char [] chars = "0123456789abcdef" .tachararray (); StringBuilder SB = new StringBuilder (""); byte [] bs = str.getbytes (); int bit; for (int i = 0; i <bs.length; i ++) {bit = (bs [i] & 0x0f0) >> 4; sb.append (chars [bit]); bit = bs [i] & 0x0f; sb.append (chars [bit]); } вернуть sb.toString (); }Преобразовать шестнадцатеричную строку в массив Метод 1:
/ ** * Преобразование шестнадцатеричного массива в байтовое * @param hexstring * @return byte [] * / public static byte [] hexstringtobyte (String hex) {int len = (hex.length () / 2); byte [] result = new Byte [len]; char [] achar = hex.tochararray (); for (int i = 0; i <len; i ++) {int pos = i * 2; Результат [i] = (byte) (tobyte (achar [pos]) << 4 | tobyte (achar [pos + 1])); } return Result; } private static int tobyte (char c) {byte b = (byte) "0123456789abcdef" .indexof (c); возврат B; }Преобразовать массив в шестнадцатеричную струнную метод 1:
/ ** * Преобразовать массив в шестнадцатеричную строку * @param byte [] * @return hexstring */ public static final String bytesteSteString (byte [] barray) {stringBuffer sb = new StringBuffer (barray.length); String Stemp; for (int i = 0; i <barray.length; i ++) {stemp = integer.tohexstring (0xff & barray [i]); if (stemp.length () <2) sb.append (0); sb.append (stemp.touppercase ()); } вернуть sb.toString (); }Метод 2 преобразования байта [] массива в шестнадцатеричную строку:
/ ** * Преобразовать массив в шестнадцатеричную строку * @param byte [] * @return hexstring */ public static String tohexstring1 (byte [] b) {StringBuffer buffer = new StringBuffer (); for (int i = 0; i <b.length; ++ i) {buffer.append (tohexstring1 (b [i])); } return buffer.toString (); } public static String toHexString1 (byte b) {string s = integer.tohexstring (b & 0xff); if (s.length () == 1) {return "0" + s; } else {return s; }}Метод 1 строки преобразования шестнадцатеричной строки:
/ ** * преобразовать hexstring в строку * @param hexstring * @return String */ public Static String hexstr2str (String hexstr) {string str = "0123456789abcdef"; char [] hexs = hexstr.tochararray (); Byte [] Bytes = новый байт [hexstr.length () / 2]; int n; for (int i = 0; i <bytes.length; i ++) {n = str.indexof (hexs [2 * i]) * 16; n + = str.indexof (hexs [2 * i + 1]); байты [i] = (byte) (n & 0xff); } вернуть новую строку (байты); }Метод 2 преобразования струн в шестнадцатеричных струнах:
/ ** * hexstring Преобразование строки * @param hexstring * @return String * / public Static String toStringHex (String S) {byte [] bakeyword = new Byte [s.length () / 2]; for (int i = 0; i <bakeyword.length; i ++) {try {bakeyword [i] = (byte) (0xff & integer.parseint (s.substring (i * 2, i * 2+2), 16)); } catch (Exception e) {e.printstackTrace (); }} try {s = new String (bakeyword, "utf-8"); // utf-16le: не} catch (Exception e1) {e1.printstacktrace (); } return s; }Приведенная выше статья о преобразовании Java, методе преобразования байта и шестнадцатеричных данных - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.