ポータブルな 64 ビット整数バイト順序関数を C で実装するにはどうすればよいですか?
Nov 01, 2024 am 01:33 AMC での移植可能な 64 ビット整数バイト順序関数
質問:
htonl のような標準関数を取得できますかこれは C の 64 ビット整数で動作し、ネットワーク バイト オーダーへの変換を可能にしますか?
答え:
C には htonll のような明示的に定義された関数はありませんが、標準ライブラリを使用すると、移植可能な実装を作成できます。以下に 2 つのアプローチを示します。
動的エンディアンネス検出の使用:
1 2 |
|
- マクロ htonll は、スワップによって 64 ビット整数 x をネットワーク バイト オーダーに変換します。ターゲット アーキテクチャがリトル エンディアンの場合は 32 ビット ワード。
- ntohll は逆の操作を実行し、ネットワーク バイト オーダーからネイティブ バイト オーダーに変換します。
プリプロセッサ マクロの使用:
1 2 3 4 5 6 7 |
|
- このアプローチでは、ほとんどのコンパイラで提供される __BIG_ENDIAN__ または __LITTLE_ENDIAN__ プリプロセッサ シンボルに基づくプリプロセッサ マクロを使用して htonll および ntohll を定義します。
- アーキテクチャが大きい場合は、エンディアン (シンボル定義) の場合、バイト スワッピングは必要ないため、関数は単に入力値を返します。
- リトル エンディアン アーキテクチャの場合、関数は前の例と同様にバイト スワッピングを実行します。
以上がポータブルな 64 ビット整数バイト順序関数を C で実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
