0

string-> byte->byte[]による変換に問題があります

私がこれまでにしたこと:

     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[]に書き込みたい。私が意味するのは:

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

この順序で、0xでキャストされます。どんな助けでも大いに感謝されます。

よろしく、アリ

4

2 に答える 2

1

ご覧のとおり、ここでの主な質問は、16進数を表す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;
}
于 2012-09-12T15:20:37.197 に答える
1

Byte.decode()を使用できます

文字列をバイトにデコードします。次の文法で指定された10進数、16進数、および8進数を受け入れます。

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

以下のコードは1011の値であるを出力します0XA0XB

    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]);
于 2012-09-12T09:31:44.720 に答える