如何将这个VB代码转换为c#?

时间:2017-04-20 12:48:37

标签: c# vb.net sockets

我有VB代码,我正在转换为C#。我已经创建了很大一部分程序但我仍然坚持这个功能的一行:

Private Sub Arduino_Write(ByVal Output As String)
    If Not IsNothing(networkStream) Then
        Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(Output)
        Dim endByte As [Byte]() = {&HFE}
        networkStream.Write(sendBytes, 0, sendBytes.Length)
        networkStream.Write(endByte, 0, 1)
    Else
        MsgBox("ERROR")
    End If
End Sub

我所知道的是endByte是一个Byte类型的数组,我不知道& HFE是什么以及如何在C#中转换或转换它。 有人可以帮帮我吗?

5 个答案:

答案 0 :(得分:1)

&HFE仅表示254的十六进制。在C#中,这将是:

byte[] endByte = { 0xFE };

答案 1 :(得分:1)

它是一个具有单个十六进制FE值的数组。在C#中你可以写成:

byte[] endByte = {0xFE};

答案 2 :(得分:0)

怎么样:

private void Arduino_Write(string Output)
{
    if (networkStream != null) {
        var sendBytes = Encoding.ASCII.GetBytes(Output);
        var endByte = { 0xfe };
        networkStream.Write(sendBytes, 0, sendBytes.Length);
        networkStream.Write(endByte, 0, 1);
    } else {
        Interaction.MsgBox("ERROR");
    }
}

答案 3 :(得分:0)

尝试一些在线转换器,它们没问题。谷歌会发现很多。 ;)

这是http://converter.telerik.com/

的示例
private void Arduino_Write(string Output)
{
    if ((networkStream != null)) {
        Byte[] sendBytes = Encoding.ASCII.GetBytes(Output);
        Byte[] endByte = { 0xfe };
        networkStream.Write(sendBytes, 0, sendBytes.Length);
        networkStream.Write(endByte, 0, 1);
    } else {
        Interaction.MsgBox("ERROR");
    }
}

答案 4 :(得分:0)

试试这个。

你可以编译VB代码并使用Reflector中的dissasembler来查看C#代码。一些变量名称将会改变。

private void Arduino_Write(string Output)
{
    if ((networkStream != null)) {
        Byte[] sendBytes = Encoding.ASCII.GetBytes(Output);
        Byte[] endByte = { 0xfe };
        networkStream.Write(sendBytes, 0, sendBytes.Length);
        networkStream.Write(endByte, 0, 1);
    } else {
        Interaction.MsgBox("ERROR");
    }
}
在互联网上有更多的在线转换器。还有一些转换器

http://converter.telerik.com/

http://www.carlosag.net/tools/codetranslator/

有时转换不是100%准确,但它肯定非常有用。您还可以使用名为Language Convert的Visual Studio 2012插件(与2010/2012完美配合)