Преобразование строки к шестнадцатеричному в Java

Объявите указатель вашей функции следующим образом:

bool (*f)();
f = A;
f();
104
задан 29 May 2009 в 00:39
поделиться

4 ответа

Я бы предложил что-то вроде этого, где str - ваша строка ввода:

StringBuffer hex = new StringBuffer();
char[] raw = tokens[0].toCharArray();
for (int i=0;i<raw.length;i++) {
    if     (raw[i]<=0x000F) { hex.append("000"); }
    else if(raw[i]<=0x00FF) { hex.append("00" ); }
    else if(raw[i]<=0x0FFF) { hex.append("0"  ); }
    hex.append(Integer.toHexString(raw[i]).toUpperCase());
}
6
ответ дан 24 November 2019 в 04:02
поделиться
byte[] bytes = string.getBytes(CHARSET); // you didn't say what charset you wanted
BigInteger bigInt = new BigInteger(bytes);
String hexString = bigInt.toString(16); // 16 is the radix

На этом этапе вы можете вернуть hexString , с оговоркой, что ведущие нулевые символы будут удалены, и результат будет иметь нечетную длину, если первый байт меньше 16. Если вам нужно обработать эти случаи, вы можете добавить дополнительный код в поле с нулями:

StringBuilder sb = new StringBuilder();
while ((sb.length() + hexString.length()) < (2 * bytes.length)) {
  sb.append("0");
}
sb.append(hexString);
return sb.toString();
5
ответ дан 24 November 2019 в 04:02
поделиться

Числа, которые вы кодируете в шестнадцатеричном формате, должны представлять некоторую кодировку символов, например UTF-8. Итак, сначала преобразуйте String в byte [], представляющий строку в этой кодировке, затем преобразуйте каждый байт в шестнадцатеричный.

public static String hexadecimal(String input, String charsetName) throws UnsupportedEncodingException {
    if (input == null) throw new NullPointerException();
    return asHex(input.getBytes(charsetName));
}

private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray();

public static String asHex(byte[] buf)
{
    char[] chars = new char[2 * buf.length];
    for (int i = 0; i < buf.length; ++i)
    {
        chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
        chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
    }
    return new String(chars);
}
18
ответ дан 24 November 2019 в 04:02
поделиться

Вот короткий способ преобразовать его в Hex:

public String toHex(String arg) {
    return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
}
193
ответ дан 24 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: