Long.toStringは上位ビットが0だった場合に削れた文字列を返してしまいます。 完全な16進数表記を得るにはString.format("%016x", number)を利用する例がよく引っかかりますが、内部処理を見ると結構重そうなことをしています。 一方、Java 17からは、このような場合に利用可能なHexFormatというクラスが追加されました。 docs.oracle.com toHexDigitsの内部実装を読んだ所、以下のような形で、ほぼビット演算のみで実装されていました。 ベンチマークは取っていませんが、これなら確実にString.formatよりも高速でしょう。 Jav…