JavaScript には、それぞれ 16 進数を文字列として含む 2 つの変数があります。例えば:
var a = 'a3bc',
b = '1d0f';
今、私はそれらを追加したいです (したがって、結果は になるはずです'c0cb'
)。物事を少し簡単にするために、これにいくつかの制約を加えましょう:
- 数値は常に同じ桁数で構成されます (つまり、文字列の長さは同じです)。
0
必要に応じて数字の前にs が付くため'001a'
、 だけでなく になり'1a'
ます。
一方で、物事を少し難しくする制約があります。
- 数値は上の例のように 4 桁ではなく、20 桁です。したがって、単純に 10 進数に変換して加算し、元に戻すことはできません。つまり、数値が JavaScript のタイプに対して大きすぎます(これが、この回答が機能しない
number
理由です)。 - オーバーフローは許されません。と を足す
'ffff'
と'0001'
、結果は'0000'
ではなくになり'10000'
ます。つまり、すべての計算はモジュロ除算を使用して行う必要があります。
私は現在、これらすべてを解決するアルゴリズムを持っていますが、それは長く、あまり効率的ではなく、エレガントではありません。その考え方は、文字列を 1 文字ずつ調べて、それらを 10 進数に変換し、それらを追加し、それらを元に変換し、潜在的なオーバーフローを記憶することなどです。前述のように、それは完全に機能しますが、最善の解決策ではないと思います。
どうすればこれをより良い方法で解決できますか?
PS: Node.js でこれを行う必要があるため、これを行う既製のモジュールが利用可能であれば、これでまったく問題ありません :-)