問題タブ [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.
c++ - 値をホスト バイト オーダーからリトル エンディアンに変換するにはどうすればよいですか?
short 値をホスト バイト オーダーからリトル エンディアンに変換する必要があります。ターゲットがビッグ エンディアンの場合、htons() 関数を使用できますが、そうではありません。
私はできると思います:
しかし、これによりバイトが2回スワップされる可能性があり、結果は正しくなりますが、私の場合は問題ないパフォーマンスペナルティが発生します。
objective-c - Objective-Cでエンディアンを交換しますか?
いくつかの値のエンディアンを交換する必要があり、Objective-C で利用可能なものがあるかどうか疑問に思いました。現在、以下の CStyle 関数でバイトを交換しています (これは明らかに再利用できます)。行方不明だった?
EDIT_001
ここのポインターのおかげで、整数がソートされました。フロートを交換する最も簡単な方法は何ですか?
(上記のコードを更新)
ゲイリー
c - Cで文字列のバイトオーダーを変換する移植可能な方法は何ですか
ソケット接続を確立できる標準クライアント (telnet クライアントなど) と通信するサーバーを作成しようとしています。
もちろん、ネットワークのバイト順を気にする必要はありませんでした。
ntohs、ntohl、htons、htonl 関数に精通しています。16 ビットまたは 32 ビットの int を転送する場合、または送信される文字列の文字が 2 バイトまたは 4 バイトの倍数である場合は、これらだけで十分です。
次のような文字列を操作する関数を作成したいと思います。
または似たようなもの。上記は、wordsize が 32 ビットであることを前提としています。送信側マシンのワードサイズが 16 ビットでないか、64 ビットでないかはわかりません。
telnet などのクライアント プログラムの場合、データを送信する前に hton* を使用し、データを受信した後に ntoh* を使用する必要がありますね。
編集: 1-char はエンディアンネスが重要ではないバイトであるため、そのことを人々に伝えます:
このコード スニペットを実行します。私にとっての出力は次のとおりです。
powerPC チップセットのユーザーは '1 2 3 4' を取得する必要がありますが、Intel チップセットのユーザーは、ほとんどの場合、上記の結果を確認する必要があります。
language-agnostic - ファイル内のすべての文字を逆にする
ここで少し困っています。
0xABが0xBAになるが、「abcd」が「dcba」にならないように、すべてのバイトを逆にするソリューションを実装するのを手伝ってくれる人はいますか。AB CD EF が BA DC FE になるように必要です。
できれば C または C++ ですが、実行できれば問題ありません。
これまでのところ、PureBasic で動作しない UBER CRAPPY ソリューションを実装しました (もちろん、文字列に変換してからバイナリに戻すのはくだらないソリューションであることはわかっています)。
読んでくれてありがとう。
.net - .NET でバイト順を逆にする
以下のコードで、なぜ X と Y は私が直感的に考えたものとは異なる値を取るのでしょうか?
0 から 7 のバイトがバッファに書き込まれた場合、結果の long は同じ順序でバイトを持つべきではありませんか? 長い値を逆順に読んでいるようなものです。
(.NETだけでなく、この質問に何をタグ付けすればよいかわかりません。)
は偽です。コンピューターがビッグ エンディアンの場合、これはなぜ起こりますか?
- これは Windows 7 64 ビット マシンです。
- Intel Core2 Quad Q9400 2.66 GHz LGA 775 95W クアッドコア プロセッサ モデル BX80580Q9400
- SUPERMICRO MBD-C2SBX+-O LGA 775 Intel X48 ATX Intel マザーボード
このコードの結果 (Jason のコメントに応じて):
結果:
perl - 32ビットPerlを使用して、64ビットStorableで凍結されたものを解凍するにはどうすればよいですか?
64ビットSolaris(本番)マシンでStorableを使用して凍結されたデータベースBLOBを解凍しようとしています。32ビットWindows(開発)PCで解凍しようとすると、「バイトオーダーは互換性がありません」というエラーが表示されます。
正確なエラーは次のとおりです。
SearchSendQueue.pmの124行目:
32ビットマシンでこのオブジェクトを解凍する方法を知っている人はいますか?
注:オブジェクトは有効であり、64ビットの実動マシンで動作しています。私はすでに「$Storable:: interwork_56_64bit=1;」を試しました。他のフォーラムで提案されているように。
c++ - リトルエンディアンプログラムでビッグエンディアンデータを読み取る方法はありますか?
外部グループは、ビッグエンディアンマシンで記述されたファイルを提供してくれます。また、ファイル形式用のC++パーサーも提供しています。
リトルエンディアンのマシンでのみパーサーを実行できます-読み取るたびにswapbytes()呼び出しを追加せずに、パーサーを使用してファイルを読み取る方法はありますか?
java - 確認してください:このコンバーターはバイト配列をビッグエンディアンとして読み取りますか?
いくつかのものをC#からJavaに移植していますが、.NETのBitConverterと同じように、バイトをプリミティブに変換できるクラスが必要です。
ここに投稿したばかりですが、私のコンピューターはリトルエンディアン(Intel)を使用しており、BitConverterは期待どおりに機能します。
予想通りb2short == 256。
さて、私はJAVAに「BitConverter」が必要で、このコードを見つけました。ただし、JAVAで試してみると、メソッドはバイト配列をビッグエンディアンとして解釈しているように見えます。JAVAコード:
この場合、b2short == 1であり、これはビッグエンディアンのように思えます。
このWebページにあるコードは、バイト配列をビッグエンディアンとして解釈していますか?
もしそうなら、それをリトルエンディアンにする簡単な方法はありますか?
c - 4バイト整数をバイト単位で印刷するときの予期しない動作
32ビット整数をIPアドレスに変換するためのこのサンプルコードがあります。
このコードは、入力に対して誤った出力を提供します2249459722
。しかし、私が交換するとき
PS:私はとについて知っていinet_ntop
ますinet_pton
。
私はそれらを提案する以外の答えを期待しています。
ruby - リトルエンディアンビットマスク
Rubyを使用して、整数の配列をリトルエンディアンのビットマスクに変換する必要があります。リンクやヒントをいただければ幸いです。
例では、[2,7,9,11] => "4205"
これは機能しませんが、私は正しい方向に進んでいますか?