VB.NET, выполняющий XOR над десятичными значениями

avatar
Overcoded
8 апреля 2018 в 06:38
65
1
0

Я переношу код с php на vb.net, но застрял по функции исключающее ИЛИ. Я не могу выполнить XOR, когда один из values ​​больше диапазона целочисленных типов данных.

Вот мой тестовый код:

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim A As Integer = 1254378503
    Dim B As Integer = 3058210502 'Overflow here
    Dim SIGN1 = A Xor B
    Dim SIGN2 = EncodeBase64(SIGN1)
    MsgBox(SIGN2)
End Sub
Public Function EncodeBase64(ByVal input As String) As String
    Return System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(input))
End Function
End Class

Я просматривал другие сообщения, касающиеся моего вопроса, но, честно говоря, Я не могу найти никакого решения или просто не могу его понять. Основной вопрос заключается в том, как выполнить XOR для десятичного типа данных (больше, чем целое число), как это делает php.

Любая помощь или подсказка о том, как этого достичь, будут высоко оценены.

Источник
Visual Vincent
8 апреля 2018 в 10:29
1

Если вам нужны еще большие числа, чем позволяет Long или Decimal, взгляните на BigInteger<41993333481497>. Он также поддерживает XOR.

Ответы (1)

avatar
AJD
8 апреля 2018 в 06:48
0

Простой ответ. Используйте Long вместо Integer. По сути, тип Integer слишком мал для хранения значений, которые вы используете в своем образце.

Вывод вашего тестового кода: NDIzNzA4OTQ3Mw== — закодирован с помощью VS Express, просто чтобы показать, что это действительно работает.