0

パッケージの名前に基づいて、一貫した一意の Long を生成する必要があります。Eclipse で「文字列を long に変換」を使用する代わりに、メソッド public static long parseLong(String s,int radix) を使用して実行時に同じタスクを達成できると思いますか?

次のようなものを使用する必要があると思います-
Long.parseLong("Hazelnut", 36) returns 1356099454469L

質問から得たもの - Java で String を long に変換する方法は?

文字を含む文字列を変換するときに基数を 36 に設定する必要があるのはなぜですか?

4

1 に答える 1

5

基本的には 36 進法の数値として扱います。たとえば、文字列 "012" は 2 + 1 * 36 + 0 * 36 2を意味します。数字がなくなると、文字に移動します。したがって、「ABC」は、「C」の12 + 「B」の11 * 36 + 「A」の10 * 36 2を意味します。

16 進法がどのように機能するかを理解していれば、ラテン アルファベットのすべての文字を使用する以外は同じです。

ただし、0-9、AZ、az 以外では失敗します。また、かなり長い文字列でも失敗します。2 63longまでしか機能しませんが、基数 36 ではかなり速く通過します。たとえば、「Hazelnut12345」は失敗します。ああ、これは大文字と小文字が区別されないため、「foo」の値は「FOO」と同じです。これは一意性の要件を満たしていませんか?

基本的に、操作できる値は 2 64 個 longしかないため、パッケージ名がかなり制限されていない限り、一意のマッピングを作成することはできません。

于 2011-10-11T17:20:27.323 に答える