【发布时间】:2019-03-06 16:17:45
【问题描述】:
我在 MATLAB 工作区中有一个 little-endian 格式的二进制数列表,我想将它们转换为 int32。 a 是一个由 0 和 1 组成的双向量,如下所示:
a = [0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0];
int32(a) 给了我一个包含 32 个二进制值的行向量,而无需将其转换为 32 位整数。
【问题讨论】:
-
a是逻辑向量还是字符向量? -
它是一个双向量,我从一个文件中读取它作为 fread(f,'ubit1')。 p.s 我没有使用“int32”,因为我正在通过位模式删除文件的某些部分。
-
也可以直接计算数字,例如通过定义一次二进制权重的向量,然后将其乘以向量。但是,如果向量在例如2的补码,可以按定义扩展
-
mantanj 提出了一个很好的观点。我们应该如何解释format(一个补码,二进制补码,偏移二进制)?
-
字节顺序是这样的。 [2...1][4...3][6...5][8...7]。 8 是最高有效位,1 是最低有效位。 [ ] 是一个字节,而 ... 表示该字节中的 6 个其他位。如果 8 为 0,则该数字为正数,如果 1 为负数。感谢您的建议,我将创建一个带有权重的向量并将其相乘。
标签: matlab binary type-conversion int32