如何获取一个uint64的前32位和后32位,并将它们保存到两个uint32变量中,使用低级操作如bitshift,and,xor...?这似乎是一个简单的问题,但 Matlab 对位操作有一些限制(例如,最多只支持 53 位)。
问问题
313 次
2 回答
3
您可以typecast()
将其'uint32'
转换为二进制文件:
x64 = uint64(43564);
x32 = typecast(x64,'uint32');
x32 =
43564 0
dec2bin(x32)
ans =
1010101000101100
0000000000000000
于 2013-06-26T00:07:13.027 回答
2
这是对@Oleg 正确答案的补充,以回应@Ruofeng 的评论。
通过这样做hex2dec
,您将转换为double
没有足够精确度来aaaaaaaaaaaaaaaa
准确存储您的十六进制数。如果你坚持使用 uint64 就可以了。
然后x64=hex2uint64('aaaaaaaaaaaaaaaa');
是奥列格的回答 [ie x32 = typecast(x64,'uint32');
] 给出了两个相同的部分:
x32 =
2863311530 2863311530
于 2013-06-26T00:53:46.780 回答