2012-09-12 6 views
0

У меня возникли проблемы преобразования через string-> байт-> байт []строка байт, то байт [] 0xformat

То, что я сделал до сих пор:

 double db = 1.00; 
    double ab = db*100; 
    int k = (int) ab; 

    String aa = String.format("%06d", k); 

    String first = aa.substring(0,2);`` 
    String second = aa.substring(2,4); 
    String third = aa.substring(4,6); 

    String ff = "0x"+first; 
    String nn = "0x"+second; 
    String yy = "0x"+third; 

Я хочу написать те байтов в байт []. Я имею в виду:

byte[] bytes = new byte[]{(byte) 0x02, (byte) 0x68, (byte) 0x14, 
    (byte) 0x93, (byte) 0x01, ff,nn,yy}; 

в этом порядке и отлит с 0x. Любая помощь очень полезна.

С уважением, Али

ответ

1

Вы можете использовать Byte.decode()

декодирует строку в Byte. Принимает десятичные, шестнадцатеричные и восьмеричные числа, заданные в следующей грамматике:

DecodableString: 
    Signopt DecimalNumeral 
    Signopt 0x HexDigits 
    Signopt 0X HexDigits 
    Signopt # HexDigits 
    Signopt 0 OctalDigits 

Ниже код будет печататься 10, 11 который является значением 0XA, 0XB

byte[] temp = new byte[2]; 
    temp[0] = Byte.decode("0xA"); 
    temp[1] = Byte.decode("0xB"); 
    System.out.println(temp[0]); 
    System.out.println(temp[1]); 
+0

он собирается расшифровать мою строку снова в байтах? Я имею в виду, что эти строки действительно то, что я хочу. –

+0

фактически мой проект работает, не преобразовывая их в байты снова. Я просто хотел поставить эти строки на bytearray. это оно. –

+0

Значит, вы хотите, чтобы вы снова конвертировали его в Hex из Byte? Если вы хотите снова String, тогда вы можете использовать 'Integer.toHexString()' –

1

Как я вижу, главным Вопрос здесь заключается в том, как преобразовать 2-символьную строку, представляющую шестнадцатеричный номер, в байтовый тип. Класс Byte имеет статический метод parseByte (String s, int radix), который может анализировать строку на число, используя нужный вам радикс (в данном случае 16). Вот пример того, как вы можете провести синтаксический анализ и сохранить результат в массиве байтов:

public static void main(String [] args){ 
    System.out.println(Arrays.toString(getBytes("0001020F"))); 
} 


public static byte[] getBytes(String str) { 

    byte [] result = new byte[str.length()/2]; //assuming str has even number of chars... 

    for(int i = 0; i < result.length; i++){ 
     int startIndex = i * 2; 
     result[i] = Byte.parseByte(str.substring(startIndex, startIndex + 2), 16); 
    } 
    return result; 
} 
+0

, пожалуйста, подумайте над тем, чтобы добавить небольшое объяснение того, что делает ваш код (см. Http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers). – codeling

+0

Прошу прощения за долгое время, я просто добавил объяснение – Roger

Смежные вопросы