在 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# 中将字符串转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将字符串转换为字节 []

如何在C#中将字节转换为字符串[重复]

在java中将字符串数组元素转换为字节数组[重复]

如何在 C# 中将固定字节/字符 [100] 转换为托管字符 []?

如何在c ++中将数组字节转换为字符串?

如何在 c# 中将字符串从 utf8 转换(音译)为 ASCII(单字节)?