我正在尝试打印标量,就像它是 int32 一样。也就是说,如果我有 2532063508
,如果我用 4 个字节写入并读取为 int32,我会读取 -1762903788
。
在Matlab中使用int32
函数不起作用,因为它的工作方式是,值超出范围[-2^31,2^31-1]
映射到最近的端点。
所以我尝试使用typecast
:
typecast(uint32(2532063508), 'int32')
工作完美,但如果我写例如-1 处,uint32() 返回 0,因此失败。
附注我希望它也适用于有符号整数作为输入,也就是说,对于 -1 它应该返回 -1
有什么建议吗?
最佳答案
您可以在 int64
中进行计算,然后转换为 uint32
:
f = @(x)typecast(uint32(mod(int64(x),int64(2)^32)),'int32');
或者
function y = f(x)
y = typecast(uint32(mod(int64(x),int64(2)^32)),'int32');
end
因此 f([-1, 2532063508])
返回 [-1, -1762903788]
。
关于matlab - 在Matlab中将标量打印为int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000244/