問題タブ [endianness]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java は整数をリトル エンディアンまたはビッグ エンディアンで読み取りますか?
CプロセスからJavaにバイトストリームを送信しているのでお願いします。C 側では、32 ビット整数の LSB が最初のバイトで、MSB が 4 番目のバイトです。
私の質問は次のとおりです。C プロセスから送信されたバイトを読み取るときの Java 側では、Java 側のエンディアンとは何ですか?
フォローアップの質問: Java 側のエンディアンが送信されたものと同じでない場合、どうすればそれらの間で変換できますか?
c# - 右側に下位ビットがあるテキストファイルにintを書き出すにはどうすればよいですか(ビジェンディアン)
デフォルトでは、BinaryWriterクラスは左側の下位ビットを使用してint値を書き込みます(たとえば、結果のファイルを16進エディターで表示すると、(int)6は06 00 00 00になります)。右側の下位ビットが必要です(例:00 00 00 06)。
どうすればこれを達成できますか?
編集:私が探していたものの名前を教えてくれてありがとうstrager。タイトルとタグを編集して、見つけやすくしました。
c++ - wchar_t データのエンディアン変換は必要ですか?
C/C++ で、マルチバイト ワイド文字 (wchar_t) 値がビッグ エンディアン システムからリトル エンディアン システムに (またはその逆に) 送信される場合、反対側でも同じ値になりますか? それとも、バイトを交換する必要がありますか?
language-agnostic - データをネットワーク順序に変換するためにリトルエンディアン システムで使用される変換は何ですか?
リトルエンディアン システムのデータをネットワーク バイト オーダーに変換するために必要な基本的な変換は何ですか? 2 バイトおよび 4 バイト データの場合、変更をカプセル化するためのよく知られた関数 (htons、ntohl など) があります。1 バイト データの文字列の場合はどうなりますか?
また、ウィキペディアは、リトル エンディアンはビッグ エンディアンのミラー イメージであることを暗示していますが、それが本当なら、なぜ 2 バイトおよび 4 バイト データに対して特定の処理が必要になるのでしょうか?
エッセイ「聖戦と平和への嘆願について」は、リトルエンディアンにはさまざまな種類があることを暗示しているように思われますが、これは古いエッセイです。Java クラス ファイルの先頭にあるようなバイト オーダー マーカーはまだ必要ですか?
最後に、ネットワーク バイト オーダーに 4 バイト アラインメントが必要ですか。
endianness - エンディアンの理論と概念
これは、プログラミング言語に固有の質問ではありません。ビッグエンディアンのマシンで書かれたファイルがあり、これを知っているとします。2 つの 1 バイト値が連続して書き込まれた場合、どうすればわかりますか? ビッグエンディアンは 16、32、および 64 ビット値の順序を逆にしますが、それを個々のバイトとして読み取る必要があることをどのように知ることができますか?
たとえば、バイト 0x11 を書き込み、次にバイト 0x22 を書き込みます。ファイルには 0x1122 が含まれます。リトル エンディアン マシンでそれを読む場合は、変換する必要があります。では、2211 と読むか、1122 と読むか。どのように知っていますか?
これは意味がありますか?ここで超基本的な何かが欠けているように感じます。
javascript - JavaScript エンディアン エンコーディング?
SO に関する回答から、JavaScript は OS とブラウザ間で特定のエンディアン エンコーディングを保証するのでしょうか?
または別の言い方をすれば、JavaScript では整数のビット単位のシフトは「安全」ですか?
c++ - asioとエンディアンをブースト
わかりませんが、ブーストasioはエンディアンを処理しますか?
c - C の大規模な文字配列のバイト オーダー
私は C でいくつかのソケット プログラミングを行っており、バイト オーダーの問題に取り組んでいます。リクエスト (送信) は問題ありませんが、データを受信するとバイトがすべて乱れます。私は次のようなことから始めます:
この応答を処理するとき、各 16 ビット ワードのバイトが逆になっているようです (私は UDP を使用しています)。私は次のようなことをしてそれを修正しようとしました:
これは、データを short として扱っている場合は正常に機能しますが、ポインターを char に再度キャストすると、バイトが逆になります。私は何を間違っていますか?
c++ - char*配列から「整数」サイズのバイトを読み取ります。
配列sizeof(int)
からバイトを読み取りたい。char*
a)エンディアンをチェックする必要がある場合、どのシナリオで心配する必要がありますか?
b)エンディアンを考慮しているかどうかにかかわらず、最初の4バイトをどのように読み取りますか。
編集:私が読んだバイトはsizeof(int)
整数値と比較する必要があります。
この問題に取り組むための最良のアプローチは何ですか
c# - バイトのビットを反転すると、なぜ次の出力が得られるのですか?
予測:
byte []をリトルエンディアンからビッグエンディアンに変換することは、byte[]の各バイトのビットの順序を逆にすることを意味します。
これが正しいと仮定して、私はこれを理解するために次のことを試みました:
変換方法:
この小さなアプリケーションの出力は、私が期待したものとは異なります。
何らかの理由で、BitConverterを使用して印刷しない限り、データは同じままです。
何がわからないの?
アップデート
新しいコードは次の出力を生成します。
しかし、今言われているように、ビットではなくバイトを反転する必要があるため、とにかく私の方法は正しくありませんか?
私が一緒に働いているこのハードウェア開発者は、データを読み取ることができないため、ビットを反転するように指示しました。
私がこれを使用しているコンテキスト
これを使用するアプリケーションは、実際には数値では機能しません。
私はビットのストリームをファイルに保存することになっています
1 =白、0=黒。
それらは、ビットマップ256x64のピクセルを表します。
バイト0からバイト31は、ピクセルの最初の行を表します。バイト32からバイト63は、ピクセルの2番目の行を表します。
私はこれらのビットを出力するコードを持っています...しかし開発者はそれらが間違った順序であると私に言っています...彼はバイトは問題ないがビットはそうではないと言います。
だから私は混乱したままです:p