matlab - 在Matlab中将标量打印为int32

标签 matlab type-conversion integer signed

我正在尝试打印标量,就像它是 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/

相关文章:

c++ - 如何将 CComVariant bstr 转换为 CString

sql - 将 INT 转换为 VARCHAR SQL

Matlab:获取标准基向量的简单方法?

algorithm - Matlab 中的排列函数

c++ - vector的构造函数中的size_type是什么意思?

java - 静态错误 : This class does not have a static void main method accepting String[]

c++ - 我可以通过给出整数范围来提示优化器吗?

javascript - 理解 javascript 中的数基

两点之间的Matlab角度

matlab - Matlab函数 “m = size(X,dim)”在opencv中等效