我的公司主要使用Matlab脚本开发产品,我们的客户在我们无法访问的RedHat环境中使用这些产品。
我正在尝试找到一种在Matlab中使用unix cksum命令的方法,以便当我们的客户收到它时,他们可以验证没有任何改变。
编辑以澄清:由于用于开发的工具是在matlab中,因此PM希望将Unix cksum函数集成到创建中,以便我们的工具输出始终与我们在Unix系统上提供给客户的输出相匹配。我们发现DOS cksum命令和Unix cksum没有给出完全相同的结果
答案 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');