- 締切済み
iアプリでバイナリデータを16進数に変換する方法がわかりません。
01234 56789 abcde こちらのデータを一旦、バイナリデータに圧縮して、 携帯端末でint型に変換する方法がわかりません。 10進数では上手くいきましたが、16進数では上手くいきません。 byte[] dbuf // 取得したデータ byte[] dttip = new byte[1]; int data = 0, pos = 0; for(int j = 0;j < 5;j++){ // 文字を配列に格納 for(int i = 0; i < 3;i++){ // ここでデータを1バイトずつ取得 dttip[0] = dbuf[pos]; data = byteChangeint(dttip[0]); if(data >= 48){ // ここでデータを取得 } else{ i--; } pos++; } public int byteChangeint(byte[] b){ int res = 0; res |= (int)(b[0]) & 0x000000FF; return res; } 16進数のデータを取得しようとした後、データの展開が上手くいきません。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- choconamacream
- ベストアンサー率44% (152/338)
ビット演算の所が何をしているのかよく分からないということもあり、恐る恐るアドバイス。 >10進数では上手くいきましたが、16進数では上手くいきません。 とあるので、上手くいった10進数の方に変換すればいいのではなかろうかと。 引数が2つあるInteger.parseIntメソッドを使用。 http://www.letsstudy.net/java/203/Notes.html 引数が2つあるInteger.toStringメソッドを使用。 http://always-pg.com/java/j2se_rd/number/integer_tostring.html
お礼
ご返事、有難う御座います。 ビット演算の箇所は取得したバイナリデータを1Byteずつアスキーコードに変換している箇所です。 アスキーコードのa~fまでの値が0x3a~0x3fだと勘違いしていました。 実際にはa~fまでの値は0x61~0x66だったので、データの取得がうまくいきました。 お騒がせして、申し訳ありませんでした。