在 C++ 編程中,C++20 中新增了一個名為 std::endian 的函數。它是一個幫助器,可以讓處理計算機在內存中存儲數據的方式變得更加簡單。在本文中,我們將討論 std::endian 以及如何在 C++ 程序中使用它。
什麽是字節序?
在討論 std::endian 之前,讓我們快速討論一下字節序。字節順序是計算機存儲無法像數字一樣存儲在單個字節中的數據的方式。有兩種類型:小端和大端。 Little-endian 將最低有效數字存儲在較低的內存地址處,big-endian 將最高有效數字存儲在較低的內存地址處。
C++ 中的 std::endian
C++ 中 std::endian 的定義是:
The std::endian is an enum that stores the information about the endianess of the computer architecture.
它在 <bit> 頭文件中定義。 std::endian 枚舉有三個成員,
- 字節序::小
- 字節序::大
- 字節序::本機
這裏
- 如果 endian::native 等於 endian::little,則字節序為小字節序。
- 如果 endian::native 等於 endian::big,則字節序為大字節序。
示例
C++
// C++ program to illustrate the use of std::endian in C++
#include <bit>
#include <iostream>
using namespace std;
int main()
{
// checking if native is little endian or big endian
if (endian::native == endian::little) {
cout << "This computer is little-endian!";
}
else if (endian::native == endian::big) {
cout << "This computer is big-endian!";
}
else {
cout << "Can't tell the endianness of this "
"computer.";
}
return 0;
}
輸出
This computer is little-endian!
這段代碼使用std::字節序找出計算機是小端還是大端並將其打印出來。
為什麽字節序很重要?
字節順序的知識可以幫助我們使我們的代碼更適應不同的計算機。如果我們的程序處理以二進製格式(如加密代碼)保存和讀取數據,則需要了解字節順序 當我們的代碼轉移到不同的係統時,可以使我們避免出現問題。
相關用法
- C++20 std::barrier用法及代碼示例
- C++ cos()用法及代碼示例
- C++ sin()用法及代碼示例
- C++ asin()用法及代碼示例
- C++ atan()用法及代碼示例
- C++ atan2()用法及代碼示例
- C++ acos()用法及代碼示例
- C++ tan()用法及代碼示例
- C++ sinh()用法及代碼示例
- C++ ceil()用法及代碼示例
- C++ tanh()用法及代碼示例
- C++ fmod()用法及代碼示例
- C++ acosh()用法及代碼示例
- C++ asinh()用法及代碼示例
- C++ floor()用法及代碼示例
- C++ atanh()用法及代碼示例
- C++ log()用法及代碼示例
- C++ trunc()用法及代碼示例
- C++ round()用法及代碼示例
- C++ lround()用法及代碼示例
- C++ llround()用法及代碼示例
- C++ rint()用法及代碼示例
- C++ lrint()用法及代碼示例
- C++ log10()用法及代碼示例
- C++ modf()用法及代碼示例
注:本文由純淨天空篩選整理自nikunj_sonigara大神的英文原創作品 std::endian in C++ 20。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。