文字列配列があります。バイト配列に変換したいです。 Javaプログラムを使用します。例えば:
String str[] = {"aa", "55"};
に変換:
byte new[] = {(byte)0xaa, (byte)0x55};
私に何ができる?
サンプルを見ると、文字列配列は実際にはバイトの16進表現の配列であるということですね。
はいの場合、各文字列項目に対して次のことを行います。
バイト値を作成します。最初の文字は上位ビットで、2番目の文字は下位ビットです。例えば。
int byteVal = (firstCharNumber << 4) | secondCharNumber;
String str = "Your string";
byte[] array = str.getBytes();
文字列をバイト配列に変換します。
byte[] theByteArray = stringToConvert.getBytes();
文字列をバイトに変換:
String str = "aa";
byte b = Byte.valueOf(str);
これに似たものを試すことができます:
_String s = "65";
byte value = Byte.valueOf(s);
_
String配列内のすべての要素に対してByte.ValueOf()
メソッドを使用して、それらをByte値に変換します。
16進数文字列から1バイトへの変換に対する答えがなかったため、ここに私のものがあります。
_private static byte hexStringToByte(String data) {
return (byte) ((Character.digit(data.charAt(0), 16) << 4)
| Character.digit(data.charAt(1), 16));
}
_
サンプル使用法:
_hexStringToByte("aa"); // 170
hexStringToByte("ff"); // 255
hexStringToByte("10"); // 16
_
または、Integer.parseInt(String number, int radix)
imoを試すこともできます。これは他の方法よりも優れています。
_// first parameter is a number represented in string
// second is the radix or the base number system to be use
Integer.parseInt("de", 16); // 222
Integer.parseInt("ad", 16); // 173
Integer.parseInt("c9", 16); // 201
_
長い道のり:)。長いfor
ステートメントを削除するメソッドを認識していません
ArrayList<Byte> bList = new ArrayList<Byte>();
for(String ss : str) {
byte[] bArr = ss.getBytes();
for(Byte b : bArr) {
bList.add(b);
}
}
//if you still need an array
byte[] bArr = new byte[bList.size()];
for(int i=0; i<bList.size(); i++) {
bArr[i] = bList.get(i);
}
String source = "testString";
byte[] byteArray = source.getBytes(encoding);
Foreachを使用して、配列内のすべての文字列で同じ操作を実行できます。
最も簡単な方法(Apache Common Codecを使用):
byte[] bytes = Hex.decodeHex(str.toCharArray());
ここで、文字列をbyte []に変換する場合、ユーティリティコードがあります。
String[] str = result.replaceAll("\\[", "").replaceAll("\\]","").split(", ");
byte[] dataCopy = new byte[str.length] ;
int i=0;
for(String s:str ) {
dataCopy[i]=Byte.valueOf(s);
i++;
}
return dataCopy;
String str[] = {"aa", "55"};
byte b[] = new byte[str.length];
for (int i = 0; i < str.length; i++) {
b[i] = (byte) Integer.parseInt(str[i], 16);
}
Integer.parseInt(string、radix)は、文字列を整数に変換します。基数パラメーターは数値システムを指定します。
文字列が16進数を表す場合は、基数16を使用します。
文字列が2進数を表す場合は、基数2を使用します。
文字列が10進数を表す場合は、10の基数を使用します(または基数パラメーターを省略します)。
詳細については、Java docs: https://docs.Oracle.com/javase/7/docs/api/Java/lang/Integer.html#parseInt(Java .lang.String、%20int)