c# - 字符串十六进制到布尔和字符串十六进制到字符串 ASCII 转换
问题描述
有关应用程序的详细信息:
- 在 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
的 tobool
并ASCII string
找到正确的值?
解决方案
字符串十六进制到布尔和字符串十六进制到字符串 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));
推荐阅读
- django - 仅当 django 中的字数大于 200 时才显示按钮
- flutter - 如何对除以分隔符的字符串 ArrayList 进行排序
- flutter - 我可以使用 Flutter 检查 SkSL 捆绑引擎版本吗?
- python - 如何在一行中完成此功能
- java - 构造函数所需的返回类型
- java - 从 mockito 检测到间歇性未完成的存根失败?
- javascript - 如何将行添加到 3D 数组 Array Google App 脚本
- html - 选择选项内的引导徽章
- nativescript - Nativescript-google-maps-sdk:mapView.zoom 不改变缩放
- asp.net-core - PasswordSignIn 返回成功,但重定向到另一个 ActionResult 用户未在 net core 3.1 中进行身份验证