簡體   English   中英

如何在 C 中使用 6 字節 integer 數據類型?

[英]How can i use 6 byte integer data type in C?

我想在 c 中使用 6 字節數據類型,但我找不到該怎么做。 你能教我如何在 c 中使用 6 字節 integer 數據類型嗎?

我使用 dev c++ 和代碼塊。

我想使用 c,但我也可以使用 c++。 Windows 64 位

閱讀 C11 標准n1570和 C++11 標准n3337

C & C++ 是不同的編程語言

另請參閱此 C 和 C++ 參考網站。

另請閱讀良好的 C 編程書籍(現代 C )和良好的C++ 編程書籍(以及編譯器的文檔)。

那里沒有提到 6 字節整數。

(理論上奇怪的 C 或 C++ 實現除外;我無法在 2020 年命名任何現有的實現)

您可以使用struct中的位字段或(而不是) 64 位數字std::int64_t )結合按位運算(例如按位和&或按位或|或按位不~或位移操作<<>>

您可能會生成序列化例程,例如使用SWIG 注意字節順序問題。 為了便於調試,您可能更喜歡JSON等文本格式,而不是發送二進制數據包。

48 位數字的典型示例是以太網幀MAC 地址。 請參閱OSDEV wiki 中提到的示例代碼。

有一種方法可以在 C 中獲得確切的位數,所以理論上它是可行的,但在 memory 中需要超過 48 位。

為此,您可以使用 C 中的位字段,您可以:

struct your_type {
   uint64_t your_value : 48;
};

有了這個,您可以創建這樣的結構,並訪問將具有 48 位表示的 your_value。 它將被視為 uint64_t 在引擎蓋下。

說我強烈建議閱讀Ansi C或任何其他基本的 C 書籍,以更好地了解基礎知識。

請注意,由於填充、打包和字節序問題,使用位域創建解析器通常是個壞主意。 如果您需要任何協議,請關注 messagepack 或任何其他協議庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM