2

私はそれがここからの重複した質問であることを知っています:リンク

可能かどうかについて、もう少し調査を試みました。そして私はそれが可能であることを見ます。

私が取得したい唯一のものは、シェルスクリプトでfunction使用する必要があるものです。convert a string to an integerSHA1 は 160 ビット長の整数です。

シェルスクリプトでそれを行う動機: 学習しようとしています。

たとえば、sha1このような変数に格納することでファイルのを取得します

store=`sha1 $blah | cut -d  ' ' -f 1`

それは私にハッシュを与えます。しかし、それを整数に変換したい場合はどうなりますか。

4

1 に答える 1

0

不可能。シェルの場合、すべてが文字列です。POSIX を離れ、シェル変数を整数型として宣言すると、通常、整数の幅は基礎となる C ライブラリの幅、つまり 32 ビットまたは 64 ビットになります。160 ビットの SHA1 ハッシュは適合しません。ただし、任意精度の演算を可能にするbcおよびユーティリティがあります。dc16 進文字列を 10 進数に変換するだけの場合は、次のようにします。

$ bc << EOF
obase=10
ibase=16
DA19BAC0F234635B6DE9362369DA07A6A4162865
1245133775210903227706347819370390008085985241189
EOF

bcaf を認識しないため、大文字の 16 進数を使用する必要があることに注意してください。

于 2012-07-29T15:32:44.410 に答える