You need to enable JavaScript to run this app. C# 如何将含十六进制字母的空格分隔字符串转换为List<byte>?
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何将含十六进制字母的空格分隔字符串转换为List<byte>?

根因说明

Byte.Parse方法默认采用十进制规则解析输入字符串,仅识别0-9的数字字符,当遇到A0这类包含十六进制字母的片段时,就会触发格式解析异常。要同时兼容纯数字、十六进制字母组成的字节片段,只需要在解析过程中显式指定十六进制数制规则即可。

可直接运行的修正实现

首先需要引入依赖的命名空间:

using System.Globalization;

修正后的完整代码:

List<byte> response = new List<byte>();
string dataReturned = "62 07 00 00 04 05 00 01 A0";

response = dataReturned
    .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
    // 显式指定按十六进制规则解析每个片段
    .Select(segment => byte.Parse(segment, NumberStyles.HexNumber, CultureInfo.InvariantCulture))
    .ToList();
实现细节说明
  • NumberStyles.HexNumber参数会告知解析器当前字符串为十六进制格式,支持识别0-9、A-F(大小写均兼容)的字符,完全覆盖场景中的纯数字片段、带十六进制字母的片段两类内容。
  • 传入CultureInfo.InvariantCulture可以消除系统区域设置对解析逻辑的干扰,避免不同地区的数字格式规则差异引发的解析异常。
  • 原有的按空格拆分、自动过滤空片段的逻辑无需做任何调整。
常见边界注意事项
  • 该解析模式不支持带进制前缀(如0x、0X)的片段,如果源字符串可能包含这类前缀,需要在解析前预先做替换处理。
  • 解析过程会自动校验片段的取值范围,单段值超过255(即超出byte类型的取值范围)的内容会直接抛出格式错误,符合类型边界要求。

内容的提问来源于stack exchange,提问作者k_al

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 06:15:04