2

如何获取一个uint64的前32位和后32位,并将它们保存到两个uint32变量中,使用低级操作如bitshift,and,xor...?这似乎是一个简单的问题,但 Matlab 对位操作有一些限制(例如,最多只支持 53 位)。

4

2 回答 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 就可以了。

请参阅http://www.mathworks.com/matlabcentral/fileexchange/26005-convert-a-number-in-hex-to-uint64/content/hex2uint64.m

然后x64=hex2uint64('aaaaaaaaaaaaaaaa');是奥列格的回答 [ie x32 = typecast(x64,'uint32');] 给出了两个相同的部分:

x32 =

  2863311530  2863311530
于 2013-06-26T00:53:46.780 回答