2015-03-02 50 views
-4

我已经给出了一些C#代码,它定义了一些私有字符串,但我不确定它在做什么,并且需要为我的项目转换为VB,但是如果有人可能需要一点时间解释并可能提供转换?将C#转换为VB - 私有字符串语句

private string GetChecksum(StringBuilder buf) 
      { 
     // calculate checksum of message 
     uint sum = 0; 
     for (int i = 0; i < buf.Length; i++) 
     { 
      sum += (char)buf[i]; 
       } 
     return string.Format("{0:X04}", sum); 
    } 
+2

http://converter.telerik.com/ – Plutonix 2015-03-02 16:07:32

+1

它是你不明白的_syntax_或_procedure_吗?它所做的就是将字符串中每个字符的ASCII值相加,最终结果模65536,因为没有溢出检查。 – 2015-03-02 16:10:50

回答

1

private string ...的部分是方法声明。 C#的

辅助返回类型方法名类型PARAMNAME

转化为

辅助Function方法名PARAMNAMEAs类型As返回类型

+0

感谢bu对函数的内容更感兴趣: uint sum = 0; (int i = 0; i Rob4236 2015-03-02 16:10:30

1
Private Function GetChecksum(buf As StringBuilder) As String 
    'calculate checksum of message 
    Dim sum As UInteger = 0 
    For i As Integer = 0 To buf.Length - 1 
     sum += CChar(buf(i)) 
    Next 
    Return String.Format("{0:X04}", sum) 
End Function 
+0

我认为'CChar'是多余的,因为'buf(i)'已经是Char了。 – 2015-03-02 16:38:18

+0

此外,由于+操作符不能应用于Char和UInteger,因此不会使用Option Strict On进行编译。 – 2015-03-02 16:51:12

0

该函数是什么加起来每个字符的ASCII值字符串(存储在一个2字节char在没有溢出检查)并将结果作为字符串返回 - 2字节结果的4个字符的十六进制表示。

校验和用于检测数据错误;如果两个字符串产生不同的校验和,那么它们不能相等。但是,给出相同校验和的两个字符串不一定相等,所以它不能用于验证相等性。