繁体   English   中英

整数到utf8字符串不起作用c#

[英]integer to utf8 string not working c#

我正在将UTF8字符串转换为整数,反之亦然。 如果我输入卐作为字符串,它将转换为21328。但是当我尝试将21328转换回字符串时,将得到“ PS”。

我试过了:

  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进行转换,并得到相同的结果。 我曾想过,这可能是TextBox的问题,我试图在记事本中写下来,但是得到了相同的结果...

您也可以尝试以下代码:

// 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 :该代码可以工作,但是转换后的某些字符占用的空间少于4个字节,因此,当从Int32转换回字符串(4个字节)时,可能会出现尾随\\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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM