2011-07-19 7 views
0

ターゲットハードウェアとソースハードウェアを一瞬無視するとします。だから、より良いエンディアンスタイルは何ですか?大きくても小さくてもかまいません。ビッグエンディアンまたはリトルエンディアンに?

私はコンセンサス/コンベンションでこの問題を解決しようとしています。私が今までに受けた最善のガイダンスは、「それは頼りになる」ということです。それはいいです。私はそれをします。

しかし、この場合、一方向にする必要はありません。従来のものはありません。だから、私は考えていました。「現在のハードウェアの最新のものは、どれが最もクリーンなものでしょうか?」

+11

ガリバーの旅行は、資料を読むことが必要です。 –

+0

ビッグ・エンド/リトル・エンドという言葉はSwiftのもので、誰がどの卵の終わりを開くかを議論する際に無意味な議論の例を挙げていた。 – djna

+0

実際にCPUの近くでコーディングしていますか? –

答えて

1

実は答えはあなたがちょうどその選択をしたい場合、それは

を依存している、あなたは常に最初のバイトからの正または負チェックすることができます。

+0

+1良い点。 ty。 – sgtz

+4

endiannessのこの 'x <0'、*に関係なく、陽性か陰性かをチェックします。エンディアンは肯定的または否定的なこととは何の関係もありません。それは表現であり、価値ではありません。このためコードを難読化しないでください。 –

2

選択しないでください。あなたのコンパイラ/プラットフォームが使用するものをそのまま使用してください。それは面倒をなくし、ちょうど動作します。

生のネットワークを使っている場合、ビッグエンディアンであるネットワークエンディアンとの間で物事を変換することができます。しかし、そのためにコード全体を混乱させないでください。あなたがネットワーク書き込み部分に着くと、変換を行うだけです。

+0

それはn言語の状況です。私はすべての言語がうまく一緒に遊びたいです。だから私は残念ながら選択する必要があります。 – sgtz

+0

@sgtz:それは同じプラットフォームですか?言語が異なるエンディアンを使用していますか? –

+0

言語は本当に問題ではありません。システムが均質であれば、心配はありません。ヘテロジニアスなら、コミュニケーションのための共通のフォーマットが必要です。これは通常ビッグエンディアンです。しかし、習慣は常にデータを扱う前にローカルフォーマットに変換されます(逆も同様) – Nim

0

問題ではありません。ちょうど1つを選ぶ。

これは無限の議論のトピックです。 1つは他のものよりも特別な利点を保持していません。ビッグエンディアン上位バイトに最初にくるので

2

ハードウェアに支配的なものを使用してください。インターネットでは「ネットワークバイトオーダー」(ビックエンディアン)を使用します。またはランダムに1つを選択します。それは重要ではありません。

+0

+1私は "ネットワークバイトオーダー"が何であるか疑問に思った。 ty。少なくとも私のビッグエンディアンのもう一つの投票。 – sgtz

関連する問題