将biginteger转换为十六进制字符串?引发异常,为什么?

问题描述 投票:0回答:1

我正在尝试将publickey变量数组中的数字转换为Hex数字。代码HEX_key = Hex(publickey(0))引发错误:

System.ArgumentException:'参数'Number'无法转换为'BigInteger'类型。'

我该如何纠正?如何将BigInteger转换为十六进制字符串?

public key is "-31969172801463260124234214026687674925736772420938592197321821673909885626448"

Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click

     Dim publickey() As BigInteger
    Dim HEX_key As String = Nothing
    publickey = EccMultiply(GENPOINT, Privatekey)
    HEX_key = Hex(publickey(0))
    TextBox11.Text = HEX_key

End Sub

P.S: EccMultiply()是一个给出我上面提到的值"-31969172801463260124234214026687674925736772420938592197321821673909885626448"的函数,公共密钥变量现在具有该值,因此publickey = (that big number)Function EccMultiply(genpoint, ScalarHex)。我没有在此处包括功能代码,因为这会使代码变长。 Hex()"Imports System.Numerics"

vb.net visual-studio biginteger
1个回答
0
投票

您误解了错误消息。这不是在告诉您参数是不能转换为BigInteger值的值。告诉您Hex不支持BigInteger类型。文档指出,带有Object参数的重载接受“任何有效的数字表达式或字符串表达式”] >>,但这意味着任何标准数字类型。 Hex不了解BigInteger。我认为您最好的选择是将BigInteger转换为Byte数组,然后自己转换为十六进制。

以下示例...

© www.soinside.com 2019 - 2024. All rights reserved.