преобразовать строку в байт, а затем вставить в массив байтов - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть шестнадцатеричная строка, st = "9e". Мне нужно преобразовать его в байт и вставить его в массив байтов. Но я не могу привести от строки к байту. Я использовал такие методы, как 1) Byte.valueOf (str); 2) новый байт (str); 3) Попробовал добавить "0X" в str и затем преобразовать в байт. Все это дало ошибки.

Можете ли вы сказать мне, как приводить от строки к байту.

Ответы [ 5 ]

1 голос
/ 16 ноября 2011

Вы пытались использовать String.getBytes () ?Он принимает строку и выводит ее как byte[].Надеюсь, это поможет.

0 голосов
/ 16 ноября 2011

Возможно, вы ищете что-то вроде этого:

import java.util.*;
import java.lang.*;

class Main
{
        public static void main (String[] args)
        {
                String hex = "9e";
                int i = Integer.parseInt(hex, 16);
                System.out.println(Arrays.toString(intToBytes(i)));
        }

        private static byte[] intToBytes(int n) 
        {
                byte[] bytes = new byte[4];
                for(int i = 0; i < 4; i++)
                {
                        bytes[i] = (byte) (n | 0);
                        n >>= 8;
                }
                return bytes;
        }
}

Поскольку байты являются целочисленными типами со знаком, вам необходимо преобразовать их в значения без знака.

0 голосов
/ 16 ноября 2011
0 голосов
/ 16 ноября 2011

Вы пробовали ниже код.

String st = "9e";
byte [] value = st.getBytes();
0 голосов
/ 16 ноября 2011

Что-то вроде

            String x = "2A"; 
    int intValue = Integer.parseInt(x, 16);
    byte b = (byte) intValue;

9e слишком велико для байта, хотя и составляет значение больше 128, которое может содержать байт.

НеподписанныйБайт может содержать 0-255, но в java есть только подписанный байт, который может содержать от -128 до 127 , поэтому вам придется соответствующим образом отобразить диапазон самостоятельно

...