x86的int則為2bytes,但Arm的架構則為4bytes。
如何解決這些資料結構問題呢?
請使用下面的函式庫stdint.h。
#include
它的內容如下:
typedef signed char int8_t
typedef unsigned char uint8_t
typedef signed int int16_t
typedef unsigned int uint16_t
typedef signed long int int32_t
typedef unsigned long int uint32_t
typedef signed long long int int64_t
typedef unsigned long long int uint64_t
.........
把它轉成自己的macros.
#define i8 int8_t
#define u8 uint8_t
#define i16 int16_t
#define u16 uint16_t
#define i32 int32_t
#define u32 uint32_t
#define i64 int64_t
#define u64 uint64_t
使用 uintX_t or intX_t 這些結構宣告的變數可以確保它的資料長度是固定的,在32bits、64bits或不CPU架構的編譯器的切換。
使用自己的macros下次轉換其他結構會比較方便。
沒有留言:
張貼留言