我需要存储一个30个字母的组合,但每个字母只能是"0","1"或"2".当我使用sizeof(myString)时,它返回32.
我想使用这个30个字母组合来访问一个数组的行,所以我想知道是否可以使用某种值的3值bool来存储3个值中的1个.
Jam*_*mes 12
3 ^ 30 = 205891132094649(~2E14),小于64位整数(~2E19)的最大值,因此您可以以1:1的方式将字符串映射到64位整数.
一个显而易见的方法是将您的字符串视为base-3数字,转换速度很慢.将它作为基数4处理得快得多,然后可以完全通过比特移位(无模数除法/乘法)完成转换,这是可能的,因为4 ^ 30仍然小于2 ^ 64.