Windows机器上的Unix cksum通过Matlab

时间:2017-12-07 17:42:21

标签: matlab unix checksum

我的公司主要使用Matlab脚本开发产品,我们的客户在我们无法访问的RedHat环境中使用这些产品。

我正在尝试找到一种在Matlab中使用unix cksum命令的方法,以便当我们的客户收到它时,他们可以验证没有任何改变。

编辑以澄清:由于用于开发的工具是在matlab中,因此PM希望将Unix cksum函数集成到创建中,以便我们的工具输出始终与我们在Unix系统上提供给客户的输出相匹配。我们发现DOS cksum命令和Unix cksum没有给出完全相同的结果

1 个答案:

答案 0 :(得分:0)

因此,如果您的目标是在Matlab应用程序本身内计算* NIX样式校验和,并且您实际上无法避免这种情况(例如,使用unix调用cksum),那么最佳选择你必须在Matlab中使用Java interop来完成这项任务。完全基于Matlab内置函数实现CRC32 Checksum计算可能会成为一项痛苦的任务......幸运的是,Matlab允许在其环境中完全使用Java技术。

以下代码应完美复制* NIX cksum命令输出:

function crc32 = CalculateCRC32(file_path)

    persistent array;

    if isempty(array) 
        array = javaArray('java.lang.String',0);
    end

    import('java.lang.Long');
    import('java.nio.file.Files');
    import('java.nio.file.Paths');
    import('java.util.zip.CRC32');

    path = Paths.get(file_path,array);
    data = Files.readAllBytes(path);

    provider = java.util.zip.CRC32();
    provider.update(data);

    crc32 = char(Long.toHexString(provider.getValue()));

end

在您的应用程序中使用它,如下所示:

crc32 = CalculateCRC32('C:\Path\To\MyFile.something');