Namespaces
Variants

std:: endian

From cppreference.net
Utilities library
ヘッダーで定義 <bit>
enum class endian

{
little = /* implementation-defined */ ,
big = /* implementation-defined */ ,
native = /* implementation-defined */ ,

} ;
(C++20以降)

すべての endianness を示します: scalar types

  • すべてのスカラ型がリトルエンディアンの場合、 std :: endian :: native std :: endian :: little と等しい。
  • すべてのスカラ型がビッグエンディアンの場合、 std :: endian :: native std :: endian :: big と等しい。

コーナーケースのプラットフォームもサポートされています:

  • すべてのスカラ型の sizeof 1 に等しい場合、エンディアンは重要ではなく、3つの値 std :: endian :: little std :: endian :: big 、および std :: endian :: native はすべて同じになります。
  • プラットフォームが混合エンディアンを使用する場合、 std :: endian :: native std :: endian :: big とも std :: endian :: little とも等しくありません。

目次

実装例

enum class endian
{
#if defined(_MSC_VER) && !defined(__clang__)
    little = 0,
    big    = 1,
    native = little
#else
    little = __ORDER_LITTLE_ENDIAN__,
    big    = __ORDER_BIG_ENDIAN__,
    native = __BYTE_ORDER__
#endif
};

注記

機能テスト マクロ 標準 機能
__cpp_lib_endian 201907L (C++20) std :: endian

#include <bit>
#include <iostream>
int main()
{
    if constexpr (std::endian::native == std::endian::big)
        std::cout << "big-endian\n";
    else if constexpr (std::endian::native == std::endian::little)
        std::cout << "little-endian\n";
    else
        std::cout << "mixed-endian\n";
}

出力例:

mixed-endian

関連項目

(C++23)
指定された整数値のバイト順序を反転する
(関数テンプレート)
翻訳内容: - "reverses the bytes in the given integer value" → "指定された整数値のバイト順序を反転する" - "function template" → "関数テンプレート" - "C documentation" → "Cドキュメント" 注意事項: - HTMLタグ、属性はそのまま保持 - `byteswap`、`endian` などのC++専門用語は翻訳せず - ` (C++23) ` 内のテキストは翻訳対象外 - プロフェッショナルで正確な技術翻訳を実施