为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
阿晨1998 2021-07-01 16:43:17
您好,我想将一些 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吗?
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

对于 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是前缀)


查看完整回答
反对 回复 2021-07-03
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

您所指的字符不是 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");


查看完整回答
反对 回复 2021-07-03
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信