You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从字符串动态生成符合十六进制格式的byte数组?

解决方案

首先你完全绕了个没必要的弯——硬编码里的0x46本质就是字符'F'的ASCII字节值,0x30是'0'的ASCII字节值,所以根本不需要先转成十六进制字符串再转回byte,直接把char强制转成byte就行:

var ListByte = new List<byte>();

foreach (char val in messageToConvert)
{
    byte val_ = (byte)val; // 直接强制转换,一步到位
    ListByte.Add(val_);
}

如果你的场景确实需要从十六进制字符串(比如你构造的0xXX格式)转成byte,那先修正你的字符串格式(去掉多余的冒号,改成0xXX),然后用byte.Parse或者Convert.ToByte处理:

// 先修正字符串构造逻辑,去掉冒号
var hexa_decimal_val = $"0x{Convert.ToInt32(val).ToString("X")}";
// 转换byte
byte val_ = byte.Parse(hexa_decimal_val, System.Globalization.NumberStyles.HexNumber);

或者更简洁的,直接用Convert.ToByte,不需要加0x前缀,直接传十六进制字符串:

var hexa_str = Convert.ToInt32(val).ToString("X");
byte val_ = Convert.ToByte(hexa_str, 16);

总结下:

  • 最直接的方案是直接把char转成byte,完全匹配你硬编码的逻辑
  • 如果一定要走十六进制字符串的路子,先修正格式,再用内置方法转换,不需要自己写转换函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:35:19