Я получаю данные через последовательный порт, и я использую следующий код, чтобы преобразовать строку в шестнадцатеричном представлении и показать его в richtextbox5:Невозможно преобразовать свою строку в шестнадцатеричном представлении
string hex = "";
foreach (char c in RXstring)
{
uint tmp = c;
hex += String.Format("{0:X2}", (uint)System.Convert.ToInt16(tmp.ToString())) ;
}
richTextBox5.AppendText(hex + " <= Hex");
где RXstring - это место хранения данных из последовательного порта. Задача : , когда я отправляю данные, такие как 127 (десятичный) => 01111111 (двоичный) => 7F (hex), он преобразуется правильно, а когда я отправляю такие данные, как 191 или 167, которые разделяют тот самый старший бит 1, и все они 8 бит вывод является 3F, несмотря на другие биты (представление любых 8 бит начинается с 1 3F), что не так с моим кодом? Вы можете помочь, thx.
вы должны относиться к тому, что идет над последовательный порт как необработанные байты, а не строка. вы должны убедиться, что используете правильную кодировку! –
Покажите свой код отправки и больше вашего кода получения. – Shar1er80
Вы уверены, что 'char' является правильным форматом данных для чтения необработанных данных? Вместо этого я использовал бы 'byte'. Он предназначен для чтения символов UTF-16, см. Https://msdn.microsoft.com/en-us/library/x9h8tsay.aspx – Robert