我有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#中转换或转换它。 有人可以帮帮我吗?
答案 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://www.carlosag.net/tools/codetranslator/
有时转换不是100%准确,但它肯定非常有用。您还可以使用名为Language Convert的Visual Studio 2012插件(与2010/2012完美配合)