获取uint64的第一个和最后一个32位

时间:2013-06-25 23:46:12

标签: matlab

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

2 个答案:

答案 0 :(得分:3)

您可以typecast()将其转换为'uint32'并转换为二进制文件:

x64 = uint64(43564);
x32 = typecast(x64,'uint32');
x32 =
       43564           0

dec2bin(x32)
ans =
1010101000101100
0000000000000000

答案 1 :(得分:2)

这是对@ Oleg正确答案的补充,以回应@Roofeng的评论。

通过执行hex2dec,您转换为double,其精确度不足以准确存储十六进制数aaaaaaaaaaaaaaaa。如果你坚持使用uint64就可以了。

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

然后x64=hex2uint64('aaaaaaaaaaaaaaaa');接着是Oleg的回答[即x32 = typecast(x64,'uint32');]给出了两个相同的部分:

x32 =

  2863311530  2863311530