有关应用程序的详细信息:
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
来找到正确的值?
答案 0 :(得分:1)
从字符串十六进制到布尔和从字符串十六进制到字符串ASCII转换
_PRIORITE
不正确的原因是因为_IndexLecture
是字符串类型。您无法将这样的“ 01”字符串参数传递给ToBoolean(sting value)
方法,只能传递“ true”或“ false”字符串参数。请使用以下方法进行替换。
_TraitementString = _Decode.Substring(_IndexLecture + 24, 2);
_PRIORITE = Convert.ToBoolean(int.Parse(_TraitementString, System.Globalization.NumberStyles.AllowHexSpecifier));
如何将十六进制字符串传递给
IPAddress
。
您可以参考这种情况reply。并且请注意,Internet协议版本4(IPv4)将IP地址定义为32位数字。因此,它可以用8位十六进制数表示。请检查_TraitementString
是否正确。
var ip = new IPAddress(long.Parse("4a0e94cb", NumberStyles.AllowHexSpecifier));