この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、記事の最後で紹介します)
1000 = 0x03E8 リトルエンディアン変換(0xE8, 0x03)
リトルエンディアンとは、バイト単位に分解された数値データを最下位のバイトから順番に格納していく方式です。
デバイス間の通信において、数値データはリトルエンディアンを指定していることがあります。
GPSを内蔵していないタブレットをカーナビとして使う場合に必要です。
ポイント
デバイス間の通信で数値データを扱う場合、ビッグエンディアンかリトルエンディアンのいずれの方式か確認が必要です。
ビッグエンディアンとは、バイト単位に分解された数値データを最上位のバイトから順番に格納していく方式です。
u-Bloxのプロトコル仕様では、メッセージ長(LENGTH)が2バイトでリトルエンディアンを指定しています。
プロトコル仕様で特に指定がない場合は、ビッグエンディアンであることが多いようです。
今回は、数値データをリトルエンディアンの文字列データに変換する方法を紹介します。
数値データをリトルエンディアン変換する
リトルエンディアンの場合、数値をバイトコードに変換後、並び順を変更します。
文字列でデータに変換する場合は、並び順を変更したバイトコードをString.formatで整形します。
サンプルでは、2バイトと4バイトの場合のリトルエンディアン変換を紹介します。
:
// LITTLE ENDIAN //
private String endian2(int i) {
byte[] bytes = ByteBuffer.allocate(Short.BYTES).order(ByteOrder.LITTLE_ENDIAN).putShort((short) i).array();
return String.format("%02X%02X", bytes[0], bytes[1]);
}
private String endian4(int i) {
byte[] bytes = ByteBuffer.allocate(Integer.BYTES).order(ByteOrder.LITTLE_ENDIAN).putInt(i).array();
return String.format("%02X%02X%02X%02X", bytes[0], bytes[1], bytes[2], bytes[3]);
}
:
2バイトの場合はShort、4バイトの場合はIntegerを使用しています。
並び順の変更はByteOrder.LITTLE_ENDIANを指定しています。
今回は、ここまでです。
数値データをリトルエンディアンで文字列データに変換しているAndroidアプリです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。
未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪
未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪
カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪
ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪
参考になったら、💛をポチッとしてね♪
コメント欄