VB.NETのBigInteger型を介して16進数、10進数の相互変換を行いたいです。
16進数の文字列を10進数へ変換する、あるいは10進数の文字列を16進数へ変換するという処理を作成しています。
Ctypeでの変換の際の桁落ちが発生しており、どうしたら処理が可能になるのかわからないのでご教授いただきたいです。
16進数の文字列が24バイトの時→10進数への変換はうまくいっているようにみえるのですが、
その結果の10進数の値を文字列として入力し、16進数へ変換をかけようとするとBigInteger型へ変換するときに桁落ちが発生していて元の16進数へ戻せなくなっています。
10進数の値は29バイトあり、Ctypeで変換かけた場合、24バイト以上の値を入れた場合は桁落ちしていたのを確認しました。
VB
1'16進数の時E28011606000020522F80078 2Dim strCode As String = "70098436782569829174974349432" 3Dim bintCade As Numerics.BigInteger = CType(strCode,Numerics.BigInteger) 4'16進数へ変換 5Dim strResult As String = bintCode.ToString("X").PadLeft(24,"0"c) 6Return strResult
上記の場合だとbintCadeの値は「70098436782569826953889579008」となってしまいます。
この10進数での入力を元の16進数へ変換するにはどのようにしたら良いのでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/27 08:38 編集