繁体   English   中英

字节数组中十六进制的C#表示形式

[英]C# representation of hex in byte array

我想通过串口发送十六进制值。

设备手册显示数据应如下所示:

Protocol sent ’ENQ’ ’0’ ’0’ ’3’ ’,’ ’0’ ’0’ ’0’ ’ETX’        
Hexadecimal    05   30   30  33  2C  30  30  30   03

编码:



    _serial.BaudRate = 9600;
    _serial.Parity = Parity.None;
    _serial.DataBits = 8;
    _serial.StopBits = StopBits.One;
    _serial.Open();

    byte[] bytesToSend = new byte[9] { 05,30, 30, 33 , 2C , 30 , 30 , 30 , 03 }; // This should be represent bytes equivalent to hex value

    _serial.Write(bytesToSend,0,9);

我知道我应该使用字节数组发送此消息,但是我不知道如何在数据字节数组中表示十六进制值。

根据您提供的示例,您的设备需要将数据编码为ASCII。 0x30 = ASCII中的'0'。

正如其他人所说,您使用“ 0x”表示十六进制值。

对于以ENQ开头并以ETX结尾的一般消息:

ASCIIEncoding asciiEncoding = new ASCIIEncoding();

string msg= "003,000";
byte[] msgBytes = asciiEncoding.GetBytes(msg);

byte[] bytesToSend = new byte[msgBytes.Length +2];
bytesToSend[0] = 0x05;
bytesToSend[bytesToSend.Length -1] = 0x03;
Buffer.BlockCopy(msgBytes, 0, bytesToSend, 1, msgBytes.Length);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM