在 Matlab 中将标量打印为 int32

printing scalar as int32 in Matlab

我正在尝试打印标量,因为它看起来像是 int32。也就是说,如果我有 2532063508,如果我将它写入 4 个字节并读取为 int32,我将读取 -1762903788

在 Matlab 中使用 int32 函数不起作用,因为它的工作方式是,[-2^31,2^31-1] 范围外的值映射到最近的端点。

所以我尝试使用 typecast:

typecast(uint32(2532063508), 'int32')

完美地工作,但如果我写,例如-1 在那里,uint32() returns 0 所以它失败了。

P.S。我希望它也适用于有符号整数作为输入,也就是说,对于 -1 它应该 return -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])returns[-1, -1762903788].