3

Adruinoが読み取るためのファイルを書き込むJavaプログラムを作成しようとしています。Arduinoはシンプルな8ビットマイクロコントローラーボードであり、いくつかの追加のハードウェアを使用して、SDカードからテキストファイルをバイトごとに読み取ることができます。

これは私が思っていたよりもずっと大変だったことがわかりました。まず、Javaには符号なしの値はありません。なんらかの理由でバイトすらありません!バイトを0xFFに設定しようとしても、精度エラーが失われる可能性があります。これは、この低レベルのコードにはあまり役立ちません。

私はintを使用し、正の値のみを使用しますが、多くのコードでバイトオーバーフローを有利に使用するのが好きです(ただし、数学演算などの直後にモジュラスを使用してこれを行うことができます)。すべての最大の問題は後でファイルに書き込まれる文字列に8ビット文字としてintを追加する方法がわかりません。現在、出力が私の最大の問題です。

では、ユーザー入力に基づいて符号なしビット演算を実行し、それらのビットをそれぞれがASCII文字であるかのようにファイルに書き込むための最良の方法は何でしょうか。

4

1 に答える 1

3

それで、これがそれがどのように機能するかです。

Java バイトは符号なしとして扱うことができます。標識が違いを生む唯一の場所は

  • 定数: バイトにキャストするだけ
  • toString と parseInt
  • 分割
  • <、>、>=、<=

署名が重要でない操作:

  • 添加
  • 引き算
  • 乗算
  • ビット演算 ( を除き、代わり>>に使用してください)>>>

バイトを符号なし値に int として変換するには、 を使用& 0xFFし、それらをバイトに変換するには を使用します(byte)

または、サードパーティのライブラリが受け入れられる場合は、Guava のUnsignedBytesユーティリティ クラスに興味があるかもしれません。(開示:私はGuavaに貢献しています。)

于 2012-12-02T17:56:12.850 に答える