首页 > 解决方案 > 字符串十六进制到布尔和字符串十六进制到字符串 ASCII 转换

问题描述

有关应用程序的详细信息:

我的应用程序从远程服务器接收帧。收到帧后,我解码所有接收到的信息,这就是我有问题的地方。

收到的数据(六):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的 toboolASCII string找到正确的值?

标签: c#visual-studiouwp

解决方案


字符串十六进制到布尔和字符串十六进制到字符串 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.

你可以参考这个案例回复。请注意 Internet 协议版本 4 (IPv4) 将 IP 地址定义为 32 位数字。因此,它可以用 8 位十六进制数表示。请检查是否_TraitementString正确。

var ip = new IPAddress(long.Parse("4a0e94cb", NumberStyles.AllowHexSpecifier));

推荐阅读