問題: パケットフォーマットの固定定義を持つ電子デバイスからネットワーク入力リーダーを実装する必要があります。ヘッダー、フッター、データ本体があります。パケット内のフィールドはビット単位で定義されます。ビットサイズの定義によるJavaカスタムシリアル化と逆シリアル化
例: フィールドSEQUENCE_NUMBER変数が31に8番ビットであると私は[]の読み取りに、バイトからJavaオブジェクトに変換することができるようにack_statusは、私は、カスタムのシリアライズ関数を作成するにはどうすればよいビット32です。パケットから? 32ビットのパケットで
StartOfPacketHeaderの4ビット
CommandCodeの4ビット
SequenceNumberはの23bits
AckStatusの1ビット、私はこのオブジェクトのためのJavaラッパークラスを作るにはどうすればよい
byte []コンストラクタとtoBytes()メソッドを使用します。
シリアル化可能インターフェイスを使用すると、個々のデータサイズを制御することができません。データサイズは、3ビットまたは18ビットの変数のような奇数値であってもよい。変数の長さをビット単位で指定することはできません。
ソースは、実際にはJavaのint型はその範囲全体を扱うことができないという意味、符号なし整数を送信します。私がこれまで行ってきた何
。すべてのデータ型をすべてのケースを処理するために長く定義する必要があります。私はBitSetクラスを使ってLong変換をLong変換にしましたが、ビットセットがデフォルトでLittle Endianにビット順序を逆転させるので、あまりにも面倒で混乱します。
概要:私は、私が最も効率的な方法で各フィールドのカスタム定義を持つネットワークおよびその逆から読んバイト[]からの私のオブジェクトに変換するにはどうすればよい
?
を、あなたは例を引用もらえますか? –
なぜですか?あなたはJavadocを読むことができませんか? – EJP
私は論理が必要ですか?私はすでにそれらを使用する方法を知っています –