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

UTF-8字符硬编码为字节的取值与转换公式咨询

关于UTF-8字符硬编码为C#字节常量的问题

1. 应该从表格中选取哪一列的值?

对于$、-、+这类ASCII范围内的字符(Unicode码点0-127),它们的UTF-8编码是单字节,且字节值完全等于它们的Unicode码点(code point)的十进制数值。所以你可以直接选取表格里的code point列的十进制值,或者把binary utf8列的单字节二进制转成十进制,结果是完全一致的。

举个实际例子:

  • $的code point是36,对应的UTF-8字节就是36(十进制),也可以写成十六进制的0x24
  • -的code point是45,UTF-8字节是45(或0x2D)
  • +的code point是43,UTF-8字节是43(或0x2B)

2. C#常量的正确写法

你可以直接填入码点的十进制或十六进制值,两种写法都合法,其中十六进制在ASCII场景下更贴合通用编码习惯:

public class Constants
{
    // 十进制写法
    public const byte dollar = 36;
    public const byte minus = 45;
    public const byte plus = 43;

    // 或者十六进制写法(更常用,对应ASCII表的标准十六进制编码)
    // public const byte dollar = 0x24;
    // public const byte minus = 0x2D;
    // public const byte plus = 0x2B;
}

3. char列值与字节值的转换公式

在C#中,char类型是UTF-16编码的16位字符,对于ASCII范围内的字符(码点0-127),char的数值就等于它的Unicode码点。而这类字符的UTF-8字节值又和码点完全相同,所以转换公式非常简单:

byte byteValue = (byte)charValue;

比如(byte)'$'会直接返回36,和我们硬编码的结果完全一致。不过要注意:这个公式只适用于ASCII范围内的字符,如果是超出127的Unicode字符,UTF-8会是多字节编码,不能直接用(byte)强制转换,需要用Encoding.UTF8.GetBytes()方法来获取正确的字节数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:42:52