我想知道是否可以使用二进制数而不是十进制数来索引数组。例如,arr [二进制]。
答案 0 :(得分:2)
是的,这绝对是可能的。只需在您的二进制数前加0b
int array[] = {1,2,4,6};
printf("%d\n", array[0b0001]); // prints 2
来自https://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html二进制常量的可以使用0b语法
编写答案 1 :(得分:2)
正如所指出的,存储在计算机上的所有数字都是二进制的。二进制是唯一可以存储在计算机上的东西。
而且,C不支持二进制语法。 (或者也许是C编译器吗?)
然而,你可以像这样转换二进制字符串:
var value = arr[BinaryToInt("1011")];
int BinaryToInt(string s)
{
int value = 0;
int bitValue = 1;
for (int i = s.Length - 1; i >= 0; i--)
{
if (s[i] == '1')
value += bitValue;
bitValue <<= 1;
}
return value;
}