我正在從秤(串行端口)接收數據爲十六進制。我想將它轉換成ASCII碼,只需要它的重量。 代碼:如何將HEX轉換爲ASCII並僅從中獲取數字?
private void button1_Click(object sender, EventArgs e)
{
if (_serialPort != null && _serialPort.IsOpen)
_serialPort.Close();
if (_serialPort != null)
_serialPort.Dispose();
_serialPort.BaudRate = Convert.ToInt16(cbBaud.Text);
_serialPort = new SerialPort(comboBox1.Text, BaudRate, Parity.None, 8, StopBits.One);
_serialPort.DataReceived += SerialPortOnDataReceived;
_serialPort.Open();
textBox1.Text = string.Format("Listening on {0}...", comboBox1.Text);
}
private delegate void Closure();
private void SerialPortOnDataReceived(object sender, SerialDataReceivedEventArgs serialDataReceivedEventArgs)
{
if (InvokeRequired)
BeginInvoke(new Closure(() => { SerialPortOnDataReceived(sender, serialDataReceivedEventArgs); }));
else
{
while (_serialPort.BytesToRead > 0)
{
textBox1.Text += string.Format("{0:X2} ", _serialPort.ReadByte());
}
}
這是我的輸出: 上偵聽COM1 ... 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20 20 20 30 0D 28 02 71 70 30 20 20 20 20 38 30 20 20 20。 ...
這是ASCII碼我手動轉換從網站:
0
( q p 0 8 0 0
( q p 0 8 0 0
( q p 0 8 0 0
( q p 0 8 0 0
( q p 0 8 0 0
( q p 0 8 0 0
( q p 0 8 0
你有個字節數組,所以你可以使用這個:System.Text.Encoding.SomeEncoding.GetString(字節) –