将 UTF8 字符编码为字节表或公式

您好,我想将一些 utf 8 字符的值硬编码为字节。


例如:'$', '-', '+';


对于'$'如何由此计算字节值:


     symbol      char              octal code point      binary code point  binary utf8

        $         U+0024              044                 010 0100       00100100   

此列中编码为字节的值是多少?


public class Constants{

   public const byte dollar= [value pick from where ?]   

   public const byte minus= [pick value from where?]

}

我应该寻找上面的哪一列来编码一个字节?列值和字节值

之间有什么公式char吗?


阿晨1998
浏览 107回答 2
2回答

不负相思意

对于 ASCII 字符(0-127 范围内的字符),您可以简单地转换它们public const byte dollar = (byte)'?';除此以外:public const byte dollar = 0x0024;所以char列。删除U+并添加 0x。仅对 0x0000-0x007F 范围内的字符有效。请注意,编译后的代码没有区别:sharplab:public const byte dollar = (byte)'$';public const byte dollar2 = 0x0024;被编译为:.field public static literal uint8 dollar = uint8(36).field public static literal uint8 dollar2 = uint8(36)使用 C# 7.0,如果您讨厌这个世界并且想要混淆您的代码,您可以:public const byte dollar = 0b00100100;(他们添加了二进制文字,0b是前缀)

紫衣仙女

您所指的字符不是 UTF-8 字符。所以它们是单字节字符。(注意 UTF-8 只对 ASCII 字符集以外的字符使用 2 个字节)由于上述原因,您可以将它们转换为:public const byte dollar = (byte)'$';如果您需要以字节为单位的 UTF-8 字符,则应使用:public static readonly byte[] trademark = new byte[] { 194, 153 };或者,更明确,但对性能来说也是最差的:public static readonly byte[] trademark = Encoding.UTF8.GetBytes("\u0099");
打开App,查看更多内容
随时随地看视频慕课网APP