2014-10-27 54 views
0

我將UTF8字符串轉換爲整數,反之亦然。 如果我輸入卐作爲字符串,它將轉換爲21328. 但是,當我嘗試將21328轉換回字符串時,我得到「PS」。整數轉換爲utf8字符串不工作c#

我想:

int dec = Convert.ToInt32(decimal1.Text, 10); 

byte[] bajti = new byte[4]; 
       bajti[0] = (byte)(dec >> 24); 
       bajti[1] = (byte)(dec >> 16); 
       bajti[2] = (byte)(dec >> 8); 
       bajti[3] = (byte)dec; 

znak1.Text = Encoding.UTF8.GetString(bajti); 

我也曾嘗試使用BitConverter轉換,得到了相同的結果。 我以爲,這可能是與文本框一個問題,我想在記事本寫了下來,但得到了同樣的結果......

+6

...你爲什麼要進入swastikas ... – 2014-10-27 17:46:48

+0

運行你的第一行'int dec = Convert.ToInt32(「卐」,10);'我得到錯誤'找不到任何可識別的數字。' – gunr2171 2014-10-27 17:48:08

+0

I必須確保每個utf8字符串都得到轉換,並且一直在嘗試所有中文和特殊字符,例如.. – user2090925 2014-10-27 17:48:16

回答

0

試試這個:

byte[] bajti = HexToBytes(hex1.Text); 
char c = 'a'; 
if (bajti.Length == 1) 
{ 
    c = (char)bajti[0]; 
} 
else if (bajti.Length == 2) 
{ 
    c = (char)((bajti[0] << 8) + bajti[1]); 
} 
else if (bajti.Length == 3) 
{ 
    c = (char)((bajti[0] << 16) + (bajti[1] << 8) + bajti[2]); 
} 
else if (bajti.Length == 4) 
{ 
    c = (char)((bajti[0] << 24)+(bajti[1] << 16) + (bajti[2] << 8) + bajti[3]); 
} 

znak1.Text = c.ToString(); 
0

您也可以嘗試以下方法代碼:

// Conversion from String to Int32 
string text = "§"; 
byte[] textBytes = Encoding.UTF8.GetBytes(text); 
byte[] numberBytes = new byte[sizeof(int)]; 
Array.Copy(textBytes, numberBytes, textBytes.Length); 
int number = BitConverter.ToInt32(numberBytes, 0); 

//Conversion from Int32 to String 
numberBytes = BitConverter.GetBytes(number); 
text = Encoding.UTF8.GetString(numberBytes); 

PS:代碼的工作,但由Int32(4個字節)轉換回字符串時轉換時的某些字符佔用少於4個字節中的空間,因此,拖尾可能會出現(它們未呈現,因爲它們代表空字符)。