【问题标题】:Convert String to ByteArray in C#在 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 或十六进制开始。我们不知道您的数据来自哪里,但它似乎不太可能遵循该规则......
  • 简单地说:要解密,您需要反转加密步骤。请给他们看。

标签: c# arrays encoding byte ascii


【解决方案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));
    

    `

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 2018-03-20
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2021-11-11
      • 1970-01-01
      • 2013-07-24
      相关资源
      最近更新 更多