在 C# 中将字符串转换为字节数组
Posted
技术标签:
【中文标题】在 C# 中将字符串转换为字节数组【英文标题】:Convert String to ByteArray in C# 【发布时间】:2017-12-11 15:28:29 【问题描述】:我想在 C# 中将 String 转换为 ByteArray 以解密一些数据。
当我从创建的 ByteArray 中获取 de String 时,它会显示问号 (?)。
示例代码:
byte[] strTemp = Encoding.ASCII.GetBytes(strData);
MessageBox.Show(strData);
MessageBox.Show(Encoding.ASCII.GetString(strTemp));
字符串是"Ê
【问题讨论】:
您需要使用正确的编码,可能是源字符串不是ASCII,请尝试使用Unicode。 如果您尝试在字符串中存储任意二进制数据,您应该使用 base64 或十六进制开始。我们不知道您的数据来自哪里,但它似乎不太可能遵循该规则...... 简单地说:要解密,您需要反转加密步骤。请给他们看。 【参考方案1】:我希望这对您有所帮助:
从字符串中获取字节数组
private byte[] StringToByteArray(string str)
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
return enc.GetBytes(str);
从字节数组中取回一个字符串:
private string ByteArrayToString(byte[] arr)
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
return enc.GetString(arr);
【讨论】:
【参考方案2】:对于特定的输入,这种 BigEndianUnicode 编码似乎可以正常工作
byte[] strTemp = Encoding.BigEndianUnicode.GetBytes(strData);
MessageBox.Show(strData);
MessageBox.Show(Encoding.BigEndianUnicode.GetString(strTemp));
`
【讨论】:
以上是关于在 C# 中将字符串转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章