Подробности о приложении:
UWP
с языком C#
и XAML
Мое приложение получает кадр с удаленного сервера. После получения кадра расшифровываю всю полученную информацию, вот тут у меня проблема.
Полученные данные (шестнадцатеричные): CA0000000100000030000000010000003137322E31362E3233392E343100000000000000000000000000000000000000
Код:
int _IndexLecture = 0;
bool _PRIORITE;
string _ABONNE;
_TraitementString = _Decode.Substring(_IndexLecture + 8, 2);
_VOIE = Convert.ToSByte(_TraitementString, 16);
_TraitementString = _Decode.Substring(_IndexLecture + 24, 2);
_PRIORITE = Convert.ToBoolean(_TraitementString);
_TraitementString = _Decode.Substring(_IndexLecture + 32, 64);
_ABONNE = Convert.ToString(_TraitementString);
Полученный результат:
_VOIE = 1
_PRIORITE =
_ABONNE =
Ожидаемый результат:
_VOIE = 1
_PRIORITE = TRUE
_ABONNE = "172.16.239.41"
Как я могу передать свои hex string
в bool
и ASCII string
, чтобы найти правильные значения?
String Hex to Bool and String Hex to String ASCII conversion
Причина, по которой _PRIORITE
неверна, потому что _IndexLecture
является строковым типом. вы не можете передать такой строковый параметр «01» методу ToBoolean(sting value)
, вы можете передать только строковый параметр «true» или «false». Пожалуйста, используйте следующий метод для замены.
_TraitementString = _Decode.Substring(_IndexLecture + 24, 2);
_PRIORITE = Convert.ToBoolean(int.Parse(_TraitementString, System.Globalization.NumberStyles.AllowHexSpecifier));
How to pass hex string to
IPAddress
.
Вы можете сослаться на этот случай Ответить. Обратите внимание, что Интернет-протокол версии 4 (IPv4) определяет IP-адрес как 32-битное число. Таким образом, это может быть выражено в 8-битных шестнадцатеричных числах. Пожалуйста, проверьте, правильно ли _TraitementString
.
var ip = new IPAddress(long.Parse("4a0e94cb", NumberStyles.AllowHexSpecifier));
Выглядит почти правильно. Вы должны иметь возможность отлаживать большую часть этого, например. Convert.ToBoolean("01") выдает исключение и может быть записано как _PRIORITE = _IndexLecture == "01"