问题  需要帮助将vb.net编码转换为c#

tiwana22

新成员
已加入
2018年8月31日
留言内容
4
编程经验
Beginner
嗨,大家好,我是这个论坛的新手,也是C#的初学者

我有一个代码可以在vb.net,bt中生成密钥,因为sm原因我切换到了c#,需要将vb.net编码转换为c#
我在线上对其进行了转换,它对我不起作用:请看一下编码

C#:
Public Function GenCode(ByVal strUN As String) As String

        Dim P1 As Long, P2 As Long, P3 As Long
        Dim S1 As String, S2 As String, S3 As String
        Dim j As Integer

        For j = 1 To Len(strUN)
            P1 = P1 + Asc(Mid(strUN, j, 1)) * 15
        Next
        strUN = LCase(strUN)
        For j = 1 To Len(strUN)
            P2 = P2 + Asc(Mid(strUN, j, 1)) * 20
        Next
        strUN = UCase(strUN)
        For j = 1 To Len(strUN)
            P3 = P3 + Asc(Mid(strUN, j, 1)) * 25
        Next

        S1 = CStr(Hex(P1))
        S2 = CStr(Hex(P2))
        S3 = CStr(Hex(P3))

        If Len(S1) > 4 Then S1 = Left(S1, 4)
        If Len(S2) > 4 Then S2 = Left(S2, 4)
        If Len(S3) > 4 Then S3 = Left(S3, 4)

        GenCode = S1 & "-" & S2 & "-" & S3
    End Function

我认为问题是c#无法识别的ASC和HEX。希望我能在这里得到解决方案。

提前致谢  :)
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
您正确的是Asc和Hex是VB特定的。要做的事情是学习他们的工作,然后学习如何以非VB特定的方式进行操作,然后相应地修改VB代码,然后将结果转换为C#。您不应该真正在不了解代码实际作用的情况下盲目转换代码,这应该是您的第一步。您会在Len,LCase,UCase和Left中找到类似的问题。

老实说,我怀疑那是VB6代码,或者原本是。那里并没有真正的.NET真正的东西,而且看起来好像它是由比.NET更熟悉VB6的人编写的。好消息是,有特定于.NET的方法可以完成所有这些工作,因此您可以轻松编写出色的VB.NET代码以实现您的目标,然后您可以将它转换为C#代码而几乎没有什么麻烦。

供将来参考,在线转换器可以做简单的代码,但是当它们遇到新的语言功能时,大多数人会步履蹒跚。我建议您从有形软件解决方案中下载Instant C#以及可能的Instant VB。对于大多数人来说,免费版本已经足够了,无论代码的复杂程度如何,它们的准确性都接近100%。 Instant C#甚至可以自动处理VB特定的功能,例如Asc和Hex。
 

tiwana22

新成员
已加入
2018年8月31日
留言内容
4
编程经验
Beginner
您能否提供几个样本输入,输出是什么?

Untitled.jpg

请看一看。
 

附件

  • Untitled.jpg
    Untitled.jpg
    8.5 KB · Views: 64
最佳 底部