2012-05-18 198 views
1

如何將字節轉換爲字符?我不是指ASCII的表示。 我有一個byte類型的變量,並希望它作爲一個字符。如何將字節轉換爲字符,例如1 - >'1'?

欲只是以下從字節轉換爲char:
0 - > '0'
1 - > '1'
2 - > '2'
3 - > '3'
4 - > '4'
5 - > '5'
6 - > '6'
7 - > '7'
8 - > '8'
9 - > '9'

(char)1Convert.ToChar(1)不起作用。他們導致'',因爲他們認爲1是ASCII碼。

+3

'1.ToString()[0]'? –

+1

它只有一個數字嗎? –

+0

@TuTran是的。在我的情況下,字節變量只是0到9之間的單個數字。 – brgerner

回答

4

數量.ToString();

one.ToString(); // one.ToString()[0] - first char -'1' 
two.ToString(); // two.ToString()[0] - first char -'2' 

請注意,你不能真正轉換bytechar
char是一個字符,而字節甚至可以三位數的價值!


如果你想使用LINQ和你一定字節不會超過個位數(10+),您可以使用此:

number.ToString().Single(); 
+0

我不敢相信這個問題上有太多令人費解的答案,他們得到的分數比這個高! – weston

+0

@gdoron對你的提示的評論:在我的情況下可以,因爲我只有一位數字。所以**在我的情況**可以寫:'one.ToString()[0]'或@ JeppeStigNielsen的提示'one.ToString()。Single()'。 – brgerner

+0

@weston。謝謝......至少它被接受了。 ':'' – gdoron

4

只需使用variable.ToString()就足夠了。如果你想獲得幻想,在轉換之前加0到變量的ASCII碼:

Convert.ToChar(variable + Convert.ToByte('0')); 
+0

如何將字節轉換爲字符? 10+值呢? – gdoron

+0

@gdoron:通過將字節的值當作BMP中字符的序數當然。這個問題清楚地表明,我們對10個以上的價值不感興趣。 – Jon

2

使用Convert.ToString()來執行此操作。

+0

爲什麼'convert.ToString()'而不僅僅是'.Tostring()'...':)' – gdoron

+1

'byte'如何能成爲'null'?它是一個'struct'。從** MSDN ** _「此實現與Byte.ToString()相同。」_ [source](http://msdn.microsoft.com/en-us/library/9b4d9sx5.aspx) – gdoron

+0

+1這個解釋。 –

3

假設你有變量byte x; 只需使用(char)(x + '0')

+0

'x'是一個'字節'。正如你所評論的,當我大於9時x會發生什麼?你會得到一些ascii代碼。 – gdoron

+0

@gdoron:抱歉使用int,但作者說它只是0到9,所以你提到的情況不會發生 –

3

將其用於轉換。

(char)(mybyte + 48); 

其中mybyte = 0或1等

OR

Convert.ToChar(1 + 48); // specific case for 1 

雖然別人給予解決方案,我會告訴你爲什麼你(char)1Convert.ToChar(1)是行不通的。

當您將字節1轉換爲字符時,將1作爲ASCII的值。

現在ASCII of 1 != 1

在其中添加48,因爲1 == 1 + 48的ASCII。類似的情況下爲0,2等等。

相關問題