Преобразование строки Hex в Bool и String Hex в строку ASCII - PullRequest
1 голос
/ 28 мая 2019

Подробная информация о приложении:

  • Разработано в Visual Studio 2019 (Windows 10)
  • Разработано на платформе 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, чтобы найти правильные значения?

1 Ответ

1 голос
/ 29 мая 2019

Преобразование строки в шестнадцатеричное значение в Bool и преобразование строки в шестнадцатеричное значение в строку ASCII

Причина, по которой _PRIORITE неверна, поскольку _IndexLecture является строковым типом.вы не можете передать такой строковый параметр «01» методу ToBoolean(sting value), вы можете только передать «истинный» или «ложный» строковый параметр.Пожалуйста, используйте следующий метод для замены.

_TraitementString = _Decode.Substring(_IndexLecture + 24, 2);   
_PRIORITE = Convert.ToBoolean(int.Parse(_TraitementString, System.Globalization.NumberStyles.AllowHexSpecifier));

Как передать шестнадцатеричную строку в IPAddress.

Вы можете сослаться на этот случай ответить .И, пожалуйста, обратите внимание, что Интернет-протокол версии 4 (IPv4) определяет IP-адрес как 32-разрядное число.Таким образом, это может быть выражено в 8-битных шестнадцатеричных числах.Пожалуйста, проверьте правильность _TraitementString.

var ip = new IPAddress(long.Parse("4a0e94cb", NumberStyles.AllowHexSpecifier));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...