使用十进制值作为十六进制值

Dav*_*vid 1 c# hex decimal

我有int 15(或字符串"15",这很简单),我需要用它来创建值:

"\u0015"
Run Code Online (Sandbox Code Playgroud)

是否有一些转换可以实现这一目标?我不能这样做:

"\u00" + myInt.ToString()
Run Code Online (Sandbox Code Playgroud)

因为第一个文字是无效的.有没有一种简单的方法来获得这个结果?

(如果您很好奇,这是为了与硬件设备集成,其中供应商有时将整数值表示为十六进制.例如,我需要将今天的日期发送到设备"\u0015\u0010\u0002".)

Jon*_*eet 6

鉴于您希望Unicode代码点为21而不是15,您应该首先使用字符串"15".如果你试图从15开始int,你会发现你不能用涉及AF的十六进制表示来表达任何东西......

因此,给定"15"解析为十六进制的最简单方法可能是:

string text = "15";
int codePoint = Convert.ToInt32(text, 16);
Run Code Online (Sandbox Code Playgroud)

之后,你只需要投射到char:

string text = "15";
int codePoint = Convert.ToInt32(text, 16);
char character = (char) codePoint;
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于基本多语言平面(BMP)中的代码点 - 即U + 0000到U + FFFF.如果您需要处理超出该值的值(例如U + 1F601),那么您应该使用char.ConvertFromUtf32:

string text = "15";
int codePoint = Convert.ToInt32(text, 16);
string character = char.ConvertFromUtf32(codePoint);
Run Code Online (Sandbox Code Playgroud)