我有一个git文件(例如file1.txt),其中有一个字符1。
echo -e 1 | git hash-object --stdin => d00491...39d4d
。
但不能接受
echo -en 'blob 2\01\n' | shasum ==>a1ff5...f6df
,因为它不将1
视为字符,而将\01
计算为单独的字符。=> blob 2
我发现这种类型的转换不适用于数字内容。
但是以字母开头就可以了!如。
echo -e 'blob 2\0w' | shasum ==> e556b8...52ef
。
echo w | git hash-object --stdin ==> e556b830c...052ef
。
从纯数字内容开始对calc哈希对象有什么想法吗?
答案 0 :(得分:2)
echo -en 'blob 2\01\n' | cat -v
不产生您想要的内容,结果是blob 2^A
而不是blob 2^@1
。
你想要的是
echo -en 'blob 2\00001\n' | cat -v
blob 2^@1
这是因为\0
为echo
开始了一个数字序列,然后echo
期望最多3位数字。也就是说,\01
的{{1}}是1个字符,代码为1;要生成echo
+ \0
,您需要对代码为0的字符使用1
,然后下一个字符为1。
\0000
Voila!