3

文字列 MacAddress を取得しました。これをバイト配列に変換する必要があります。Java では、numberformat 例外をスローして直接変換することはできません。これは私が今していることです

clientMac[0] = (byte)Integer.parseInt(strCameraMacId.substring(0, 2));

順を追ってやってみました

String mc = strCameraMacId.substring(0,2);
        int test = Integer.parseInt(mc);
        clientMac[0] = (byte) test;

しかし、文字列 mc は値「08」で構成され、int からバイトへの変換を行った後、im はゼロを失います。変換しようとしている MAC アドレスは「08-00-23-91-06-48」であり、すべてのゼロが失われる可能性があります。私は?この問題にアプローチする方法について誰かが考えていますか?

どうもありがとう

4

3 に答える 3

5

あなたは「0」を失っていません。abyteは、ではなく、string8と08は同じであるためです。

しかし、もっと重要なのは、コードのこの間違いです。

parseIntメソッドを使用しています。これにより、アドレスが10進整数として解析されます。MACアドレスは、表示方法を分割すると通常は16進数であるため、これは機能しません。たとえば、「08」の代わりに「A8」に出くわすことができます。

別の方法を使用する必要があります。

Integer.parseInt(String s, int radix)

16として合格radixすれば、あなたは元気になるはずです。

于 2012-04-20T11:46:23.373 に答える
4

バイト値にはゼロが含まれます。0x08 == 8 であることを思い出してください。6 バイトの配列に変換できるはずです。あなたのアプローチは問題ありません。これを文字列に変換する場合は、各数値を 2 文字に戻すことを Java に知らせる必要があることを覚えておいてください。これにより、暗黙のゼロが元の位置に戻ります。

于 2012-04-20T11:44:01.917 に答える