我正在尝试编写一个小程序,为从 ASCII 字符数组中提取的十六进制和二进制值生成奇偶校验位。我总共有 3 个字符数组。例如:
const char *caASCII[] = {"A", "B", "C", ...};
const char *caASCIIBinary[] = {"01000001", "01000010", "01000011", ...};
const char *caASCIIHex[] = {"41", "42", "43", ...};
因此,我键入“A”,它会在二进制和十六进制数组中找到相应的值,然后显示它们。我有一个执行搜索的线性搜索函数,它工作正常。
我想知道是否可以计算,例如,“1”在一个二进制值中出现的次数,然后据此判断(如果 1 的数量是偶数或奇数)添加一个“0”或二进制值末尾的“1”。我想我必须将十六进制值除以 2 才能确定它是偶数还是奇数。
我开始认为我必须将数组更改为不同的类型,可能是整数。关于我如何处理这个问题有什么建议吗?
最佳答案
三个数组的想法是一个巨大的废话:那些信息很容易通过很少的操作计算出来。 例如,要知道二进制表示中“1”的个数:
int bits_on(char yourchar) {
int count = 0;
while (yourchar > 0) {
count += yourchar % 2;
yourchar >>= 1;
}
return count;
}
“偶数加1”
int newInt = yourChar << 1;
newInt += bits_on(yourchar) % 2 == 0 ? 1 : 0;
关于c++ - 在字符数组中搜索多次出现的值,然后列出出现次数。 VC++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967524/