Har*_*shi 2 c# bit-manipulation bitwise-operators ulong
我有一个Dictionary<int,ulong>,我想存储的地方StudentId和他/她的注册courses(保证是2).
现在,正如您所看到的,List我想将它们存储ulong为ulong占用64位并int占用32位,而不是将2个courseid保存为整数.
所以我的问题是,我如何组合这两个整数id并将它们存储到一个ulong变量中.我尝试了一些Bitwise操作和转移,但无法弄明白.
将两个ints 的数据"打包" 成64位可以在没有ulong例如这样的情况下完成:
Dictionary<int,ValueTuple<int,int>>
Run Code Online (Sandbox Code Playgroud)
ValueTuple<int,int>占用尽可能多的空间ulong,但它允许您int通过其属性访问各个s.
如果你必须使用ulong,这里有一种方法可以让你打包和解压缩int:
private static ulong Combine(int a, int b) {
uint ua = (uint)a;
ulong ub = (uint)b;
return ub <<32 | ua;
}
private static void Decombine(ulong c, out int a, out int b) {
a = (int)(c & 0xFFFFFFFFUL);
b = (int)(c >> 32);
}
Run Code Online (Sandbox Code Playgroud)