我习惯于将 SHA256 哈希值打印为十六进制,但是这个哈希值是如何编码的呢?
u98a9cjsd98saud090923ßkpoasköf9ß32
这来自 Snakemake 文档,在此上下文中:
sha256 校验和可以按如下方式进行比较:
my_checksum = "u98a9cjsd98saud090923ßkpoasköf9ß32" rule NAME: output: ensure("test.txt", sha256=my_checksum) shell: "somecommand {output}"
实际上根本没有编码,而这些只是哈希的字节吗? 不过,我希望它是一个
bytes
对象而不是字符串。
它可能已损坏,由根本不了解编码的人编码。该字符串显然应该是二进制的。 它不能是 utf-8,因为“ß”将成为一个两字节序列,不太可能在哈希中计算序列。
因此,尝试“latin1”,其中“ß”由“\xcd”字节表示 - 它是一种流行的字符映射编码,其中包含该字符,因此很有可能它会起作用。
I.i.使用
checksum = my_checksum.encode("latin1")
将该字符串转换为“bytss”对象。 和报告了项目中的一个错误,该错误使用带有非 ASCII、非转义字符的文本字符串来表示字节。