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

在C#中将十六进制字符串转换为单个字节的方法

将带0x前缀的十六进制字符串转为byte类型

你的现有函数存在一个问题:输入字符串是"0x0f",开头的"0x"是十六进制标识前缀,你的函数直接从索引0开始截取2个字符(得到"0x"),调用Convert.ToByte时会抛出格式异常,因为"0x"不是有效的十六进制数字。

要正确转换带0x前缀的十六进制字符串为byte,你可以先移除前缀再进行转换,这里提供几种简单的实现方式:

方式一:移除前缀后用Convert.ToByte

public byte HexToByte(string hexText)
{
    // 忽略大小写判断并移除0x前缀
    if (hexText.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
    {
        hexText = hexText.Substring(2);
    }
    // 转换为单个byte值
    return Convert.ToByte(hexText, 16);
}

方式二:使用byte.Parse配合NumberStyles.HexNumber

// 直接替换前缀后解析
byte result = byte.Parse(hexText.Replace("0x", ""), System.Globalization.NumberStyles.HexNumber);

// 更安全的TryParse版本,避免转换失败抛出异常
if (byte.TryParse(hexText.Replace("0x", ""), System.Globalization.NumberStyles.HexNumber, null, out byte safeResult))
{
    // 转换成功,使用safeResult
}
else
{
    // 处理转换失败的逻辑,比如输入格式错误
}

你的原函数其实适合处理不带0x前缀的纯十六进制字符串(比如"0f"),但针对带前缀的场景,必须先处理掉前缀才能确保转换成功。

内容的提问来源于stack exchange,提问作者Otávio Zordan Alves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:30:51