什么是这个C#代码的VB.NET等价物(将ASCII字符串转换为十六进制)?

pro*_*365 1 c# vb.net c#-to-vb.net

什么是这个C#代码的VB.NET等价物(将ASCII字符串转换为十六进制)?

public static string AsciiToHex(string asciiString)
{
    string hex = "";

    StringBuilder sBuffer = new StringBuilder();
    for (int i = 0; i < asciiString.Length; i++)
    {
        sBuffer.Append(Convert.ToInt32(asciiString[i]).ToString("x"));
    }
    hex = sBuffer.ToString().ToUpper();

    return hex;
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 5

一些东西:

  1. 为什么要使用外观也适用的for循环foreach?(答案是:不是)
  2. ToUpper当我们选择正确的格式化标志(X)时,这是多余的.
  3. 变量hex没用.
  4. Convert.ToInt32可以缩短为(int).
  5. 名称"ASCII"实际上是错误的 - 您在这里使用Unicode.
  6. 通常,这需要填充,因为ToString("x")结果具有可变长度:对于字符代码<16,它产生单个字符!

这让我们:

public static string CharToHex(string str) {
    StringBuilder buffer = new StringBuilder();
    foreach (char c in str)
        buffer.AppendFormat("{0:X2}", (int) c);
    return buffer.ToString();
}
Run Code Online (Sandbox Code Playgroud)

...并翻译成VB:

Public Shared Function CharToHex(ByVal str As String) As String
    Dim buffer As New StringBuilder()

    For Each c As Char in str
        buffer.AppendFormat("{0:X2}", Asc(c))
    End For

    Return buffer.ToString()
End Function
Run Code Online (Sandbox Code Playgroud)