2011-09-13から1日間の記事一覧

64ビット整数を8ビット配列に格納

(uint64_t)64ビット整数を(uint8_t)8ビット配列に格納する際、8成分必要です。番兵を入れれば9成分でしょうか。同じ最大9成分でも、それぞれの成分の1ビット分を次があるかどうかを示すフラグにする方法も考えられます。メリットとしては、成分が少ないとき…

変数 = (式, 値); assert(値 == 変数);

C言語の文法にこんなのあったかなぁ.. #include <assert.h> #include <string.h> #define getVarint(p, v) (*(p+1) & 0xff)? (*v = *p, 1): get_varint(p, v) unsigned get_varint(unsigned char* p, unsigned int* v) { unsigned int a[4]; int i; assert(*p & 0xff); a[0] = *p</string.h></assert.h>…