Преобразовать любую базу типа BigInteger на базе 10 и снова преобразовать обратно базу
Я хочу преобразовать значение biginteger базы 3 в базу 10 и снова преобразовать базу 3. Как я могу это сделать?
Я использую этот код для этого. Но я получаю неверный результат. Этот код работает для коротких значений, например("22222222210222211011111222")
Что я уже пробовал:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim BigValue As BigInteger = BigInteger.Parse("22222222210222211011111222011100022001111") Dim TenBase As BigInteger = ToTenBase(BigValue, 3) Dim TenBaseByte As Byte() = TenBase.ToByteArray Dim TreeBase As String = FromTenBase(TenBase, 3) If BigValue.ToString <> TreeBase.ToString Then Stop 'Stopping here End Sub Function ToTenBase(ByVal BigValue As BigInteger, ByVal Base As BigInteger) As String Dim Result As BigInteger = 0 Dim strValue = BigValue.ToString.ToCharArray For i As BigInteger = strValue.Count - 1 To 0 Step -1 Dim d As BigInteger = strValue(i).ToString Dim counter As BigInteger = ((strValue.Count - 1) - i) Result = Result + d * (BigInteger.Pow(Base, counter)) Next Return Result.ToString End Function Function FromTenBase(BigValue As BigInteger, Base As BigInteger) As String Dim Result As String = "" Dim Division As BigInteger = BigValue Dim Remaining As BigInteger Dim Dividing As BigInteger Do Until Division < Base Dividing = Division Division = BigInteger.Divide(Division, Base) Remaining = Dividing - Division * Base Result = Remaining.ToString & Result Loop Result = Division.ToString & Result Return BigInteger.Parse(Result).ToString End Function
Kornfeld Eliyahu Peter
Это может подойти вам: https://www.codeproject.com/Tips/1085580/On-What-Base-Do-You-Stand
CPallini
Мои виртуальные 5 (а также фактические 5 на ваш совет).
Kornfeld Eliyahu Peter
Спасибо...