iT邦幫忙

1

.Net C#翻譯為VB.Net Function

各位高手大大好,
小弟只會VB.Net,但技術文件是.Net C#
看的非常痛苦,請問下方這段C#的Function
該如何翻成VB.Net的Function呢?

private static string ByteArrayToHex(byte[] barray)
{
char[] c = new char[barray.Length 2];
byte b;
for(int i=0;i<barray.Length;++i)
{
b=((byte)(barray[i] >> 4));
c[i
2]=(char)(b > 9 ? b+0x37 : b+0x30);
b=((byte)(barray[i] & 0xF));
c[i*2+1]=(char)(b > 9 ? b+0x37 : b+0x30);
}
return new string(c);
}

player iT邦大師 1 級 ‧ 2020-03-17 18:42:09 檢舉
下次遇到這類的問題
你可以先用C#與VB.NET互轉的線上工具先轉看看
如果轉出來的Code沒辦法正常執行
再叫人幫你看
https://www.developerfusion.com/tools/convert/csharp-to-vb/
http://www.carlosag.net/tools/codetranslator/
原來有這類的線上工具
我會再試試,感謝您

1 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2020-03-17 07:55:22
最佳解答

資料來源

#Region "ByteArrayToHex"
    '''

    ''' method to convert a byte array into a hex string
    '''

    ''' byte array to convert
    ''' a hex string
    Public Function ByteArrayToHex(ByVal comByte As Byte()) As String
        'create a new StringBuilder object
        Dim builder As New StringBuilder(comByte.Length * 2)
        'loop through each byte in the array
        For Each data As Byte In comByte
            builder.Append(Convert.ToString(data, 16).PadLeft(2, "0"c).PadRight(2, " "c))
            'convert the byte to a string and add to the stringbuilder
        Next
        'return the converted value
        Return builder.ToString().ToUpper()
    End Function
#End Region
看更多先前的回應...收起先前的回應...

原本C#迴圈裡面那塊看不懂在做什麼
看您的結果卻一行很簡潔
可以大概說明一下是什麼意思嗎?
謝謝您

fillano iT邦超人 1 級 ‧ 2020-03-17 09:48:53 檢舉

C#是手動轉成十六進位的表示字串,海綿大這個是用StringBuilder來組合字串,用Convert來把byte轉成十六進位表示。

另外,C#那個是用移位(右移四位,十六是二的四次方),以及跟0xF的And運算取出高低位元(各四個位元),然後用加法來跟ASCII做mapping。0x30開始是數字,0x37+0x0A開始是大寫字母。

真是博大精深,謝謝你們的解說

不好意思讓費大公幫忙解釋了
/images/emoticon/emoticon25.gif

其實你貼的程式碼有點多餘
這裡再貼另一個範例
也是只要一列就可以

using System;
					
public class Program
{
	public static void Main()
	{
		byte[] byteArray = System.Text.Encoding.Default.GetBytes ( "2020ABC" );
		string str = System.Text.Encoding.Default.GetString ( byteArray );
		Console.WriteLine("Hello World " + str);
	}
}

好的,謝謝您

我要發表回答

立即登入回答