Java でバイト配列形式で定数値 (UUID) を保存する必要があり、それらの静的配列を初期化する最適な方法は何かと考えています。これが現在のやり方ですが、もっと良い方法があるはずです。
private static final byte[] CDRIVES = new byte[] { (byte)0xe0, 0x4f, (byte)0xd0,
0x20, (byte)0xea, 0x3a, 0x69, 0x10, (byte)0xa2, (byte)0xd8, 0x08, 0x00, 0x2b,
0x30, 0x30, (byte)0x9d };
private static final byte[] CMYDOCS = new byte[] { (byte)0xba, (byte)0x8a, 0x0d,
0x45, 0x25, (byte)0xad, (byte)0xd0, 0x11, (byte)0x98, (byte)0xa8, 0x08, 0x00,
0x36, 0x1b, 0x11, 0x03 };
private static final byte[] IEFRAME = new byte[] { (byte)0x80, 0x53, 0x1c,
(byte)0x87, (byte)0xa0, 0x42, 0x69, 0x10, (byte)0xa2, (byte)0xea, 0x08,
0x00, 0x2b, 0x30, 0x30, (byte)0x9d };
...
and so on
効率は落ちるかもしれないが、見た目がきれいになるものはありますか? たとえば、次のようなものがあります。
private static final byte[] CDRIVES =
new byte[] { "0xe04fd020ea3a6910a2d808002b30309d" };
ベストアンサー1
ユーティリティ関数を使用して、使い慣れた 16 進文字列から に変換できますbyte[]
。定数を定義するために使用する場合final static
、パフォーマンス コストは関係ありません。
Java 17以降
今はjava.util.HexFormat
これにより、
byte[] CDRIVES = HexFormat.of().parseHex("e04fd020ea3a6910a2d808002b30309d");
このユーティリティ クラスを使用すると、他の形式の方が読みやすい場合や、参照ソースからコピーして貼り付ける場合に便利な形式を指定できます。
byte[] CDRIVES = HexFormat.ofDelimiter(":")
.parseHex("e0:4f:d0:20:ea:3a:69:10:a2:d8:08:00:2b:30:30:9d");
Java 17以前
Dave Lが定義した関数を使用することをお勧めします。Java を使用して 16 進ダンプの文字列表現をバイト配列に変換しますか?
byte[] CDRIVES = hexStringToByteArray("e04fd020ea3a6910a2d808002b30309d");
読みやすさを最大限にするためにここに挿入します:
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}