我有INT 15
(或字符串"15"
,這只是簡單),我需要用它來創造價值:使用十進制值以十六進制值
"\u0015"
有一些轉換這會做到這一點?我不能這樣做:
"\u00" + myInt.ToString()
因爲第一個文字是無效的。有沒有簡單的方法來獲得這個結果?
(如果你很好奇,這是與硬件設備,其中供應商有時表示整數值爲十六進制的整合。例如,我需要發送今天的日期到該設備作爲"\u0015\u0010\u0002"
)
我有INT 15
(或字符串"15"
,這只是簡單),我需要用它來創造價值:使用十進制值以十六進制值
"\u0015"
有一些轉換這會做到這一點?我不能這樣做:
"\u00" + myInt.ToString()
因爲第一個文字是無效的。有沒有簡單的方法來獲得這個結果?
(如果你很好奇,這是與硬件設備,其中供應商有時表示整數值爲十六進制的整合。例如,我需要發送今天的日期到該設備作爲"\u0015\u0010\u0002"
)
既然你要的21 Unicode代碼點,而不是15,你一定要以字符串「15」開頭。如果你試圖從15開始作爲int
,你會發現你不能用任何涉及自動對焦的十六進制表示任何東西......
所以,給定「15」的最簡單的解析方法,十六進制可能是:
string text = "15";
int codePoint = Convert.ToInt32(text, 16);
在此之後,你只需要轉換爲char
:
string text = "15";
int codePoint = Convert.ToInt32(text, 16);
char character = (char) codePoint;
請注意,這隻會在基本多文種平面代碼點(BMP) - 即U + 0000至U + FFFF。如果您需要處理超過該值(例如U+1F601),那麼你應該使用char.ConvertFromUtf32
代替:
string text = "15";
int codePoint = Convert.ToInt32(text, 16);
string character = char.ConvertFromUtf32(codePoint);
字符串中的Unicode文字在編譯時解析,這就是爲什麼"\u00" + myInt.ToString()
不起作用(ToString()
和連接在運行時進行評估)。
你可以施放INT爲char:
int unicodeCodePoint = 15; // or 21
char c = (char)unicodeCodePoint;
的OP要U + 0015雖然不是U + 000F。這有點搞砸了...... –
@JonSkeet:''這有點搞砸了......「 - 我們完全同意。供應商,但。你能做什麼? :) – David