【发布时间】:2016-11-17 21:05:55
【问题描述】:
我正在尝试将uint64_t 位域全部设置为 0。然后,当我在给定字符串中调用函数时,它与我设置的静态全局数组匹配时,会将位翻转为 1。目前我有以下代码,但由于某种原因,在给它不同的字符串时,它遵循相同的行为。因此,例如,当我输入以下“ABC”字符串时,它应该打印出111000。我将如何获得以下行为。
const size_t SETSIZE = sizeof(uint64_t) << 3;
char key[5] = { 'A', 'B', 'C', 'D', 'E', 'F' }
uint64_t set_encode(char *st) {
int i, j;
uint64_t set = 0;
int length = strlen(st);
for (i = 0; i < length; i++) {
for (j = 0; j < 5; j++) {
if (st[i] == key[j]) {
printf("%c", st[0]);
set = set | 1 << (SETSIZE - 1 - i);
}
}
}
printf("%lu\n", set);
return set;
}
【问题讨论】:
-
打印的是什么?我会把 SETSIZE 放在括号中 #define SETSIZE (sizeof uint64_t
-
代码与位域关系不大。
标签: c bit-fields