如何获取uint64的前32位和后32位,并使用低级操作(如bitshift和xor ......)将它们保存到两个uint32变量中?这似乎是一个简单的问题,但Matlab在位操作方面有一些限制(例如,最多只支持53位)。
答案 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就可以了。
然后x64=hex2uint64('aaaaaaaaaaaaaaaa');
接着是Oleg的回答[即x32 = typecast(x64,'uint32');
]给出了两个相同的部分:
x32 =
2863311530 2863311530