bit-fields

    1熱度

    2回答

    我正在使用類似arduino的平臺(非常有限的RAM),並且需要使用位域。我需要修改的特定位的字節,像這樣的東西: OneByte myByte = 0b11101111; myByte[5] = 1; 要做到這一點,我寫了下面: typedef struct { uint8_t bit0:1; uint8_t bit1:1; uint8_t bit2:1;

    0熱度

    2回答

    我想將一個10位整數和一個54位整數打包爲一個64位結構。但是這個代碼最終使用了128位。 from ctypes import * class ABC(Structure): _fields_ = [("a", c_int, 10), ("b", c_uint64, 54)] print(sizeof(ABC) * 8) # 128

    3熱度

    2回答

    我有一個特殊的問題,我有一個16位結構。在結構內部,在成員「x_pos」之後,取決於某個外部標誌,接下來的5位表示不同的東西。 如果設置了外部標誌,它們是旋轉&縮放參數(rotscale_param),否則高兩位是水平和垂直翻轉位。 我試圖用聯合表示這個結構,但是當我這麼sizeof(屬性)時,我期待看到2個字節,但結果是4個字節。 我的代碼: typedef unsigned short u16

    2熱度

    2回答

    比方說,我有以下 struct S { union { uint8_t flags; struct { uint8_t flag2bits : 2; uint8_t flag1bit : 1; }; }; }; S s; s.flag2bits = 2; s.flag1bit = 1; // this will wipe out

    8熱度

    4回答

    看到網上例如: Ideone example struct { union { struct { uint32_t messageID : 26; uint8_t priority : 3; } __attribute__ ((packed)); uint32_t rawID : 29; } __attribute__ ((

    1熱度

    1回答

    相同的問題之間的不同但具體到包裝結構位字段:Why would the size of a packed structure be different on Linux and Windows when using gcc? 我建立Linux和Windows的共享庫需要通過網絡連接處理結構良好的數據。我在Linux上使用gcc 4.8.2,並使用i686-pc-mingw32-gcc 4.8.1交

    2熱度

    1回答

    我有以下代碼: #include <stdio.h> #include <stdint.h> enum nums { ONE, TWO, TWENTY = 20 }; struct field { uint32_t something : 4; uint32_t rest : 28; }; int main(void) {

    2熱度

    1回答

    我試圖將現有的應用程序從32位ARM微控制器移植到桌面平臺,如Microsoft Windows。 GCC在ARM上使用,我可以使用32位MinGW編譯器在Windows上成功編譯應用程序,但是我沒有成功使用Microsoft的Visual Studio編譯器,這就是我在這裏尋求幫助的原因。 這裏是我的應用程序是這樣做的: 我有一些幀緩衝由每像素三個字節,所以我的記憶中的樣子RGBRGBRGB等。

    1熱度

    3回答

    我最近在C中使用了位字段,顯然這些位是從低到高排列的,儘管Google不支持這個論文(例如Wikipedia。 ) 採取以下代碼(http://ideone.com/UwWfJM): #include <stdio.h> struct bits { unsigned char a : 1; unsigned char b : 1; unsigned char c

    2熱度

    2回答

    請幫我用下面的代碼片段相關的邏輯。我得到的輸出是12 8。 *p怎麼是12? 我理解它的大小爲8,但我忐忑與*p顯示值。 int main() { struct bitfield { unsigned a:5; unsigned c:5; unsigned b:6; } bit; char *p; st