>コロン:で分けられた数字部分のみをバイト配列に格納したいのですが、そのうまい方法がわかりません。
java.util.StringTokenizer を使いましょう。
例)StringTokenizer st=new StringTokenizer(args[0],":");
これで、st.nextToken() を呼び出せば「コロンで分けられた部分」の文字列を抽出出来ます。
例)
StringTokeinzer st=new StringTokeizer(args[0],":");
String[] s=new String[st.countTokens()];
for(int i=0; i<s.length; i++){
s[i]=st.nextToken();
}
>byte mac_addr[0] = Byte.parseByte("0x".concat(str.substring(0,1))); なんて事もしてみました
public static byte parseByte(String s)
は、文字列表現を基数10として扱うものです。
この場合は、もう1つの parseByte() 。。。
public static byte parseByte(String s, int radix)
を使ってみてください。radix は基数の指定です。
例)mac_addr[0]=Byte.parseByte(str, 16);
これで、基数16として数値の文字列表現(str)を byte型に変換します。
それと、Java の byte は 127 ~ -128 の値しか取りません。ご注意を。
お礼
早速の回答ありがとうございます。 早速試してみました。 うまく文字列を引き出すことには成功いたし、大変感謝いたします。今まで数十行でやっていたことがたった数行で収まりました。気持ちいいですね。 ところで、str = "a5"で >例)mac_addr[0]=Byte.parseByte(str, 16); の時、 >それと、Java の byte は 127 ~ -128 の値しか取りません。ご注意を。 ということで、byteに格納するのは不可能となると考えました。(間違っているかな?) こうするとうまくMACアドレスを指定できるのですが mac_addr[0]=(byte)(0xa5); String型の"a5"を0xa5に指定できる方法はありませんでしょうか? 以上