【问题标题】:Converting string to byte array in C# (CSV)在 C# (CSV) 中将字符串转换为字节数组
【发布时间】:2010-11-30 11:55:25
【问题描述】:

我写了一个函数来将byte[] 转换为string,我添加了“;”在每个字节之后。现在我想通过拆分字符串(类似于 CSV 字符串)将这个 string 转换为 byte[]

public string ByteArrayToString(byte[] byteArray,string s)
{       
    for (int i = 0; i < byteArray.Length; i++)
    {
        s += byteArray[i].ToString() + ";";
    }
    s = s.Substring(0, s.Length - 1);
    return s;
}

我怎样才能写一个函数把这个字符串再次转换成那个字节数组?

【问题讨论】:

  • 字符串是T;*;|;m;还是84;42;124;109;
  • "谢谢,但它帮不了我!我想用 ";" 分割我的字符串,然后把它放在数组中,然后将它转换为字节 [] " 尝试为此编写一些伪代码所以我们可以看到你想要什么。我对那个 qoute 的理解是你想将一个 string[] 转换为一个 byte[],同时将每个字符串值解释为一个字节。这是不可能的。您需要转换每个值

标签: c# .net string bytearray string-split


【解决方案1】:

试试这个

var byteArray = new byte[] {123, 11, 111};
var stringBytes = string.Join(";", byteArray.Select(b => b.ToString()));
var newByteArray = stringBytes.Split(';').Select(s => byte.Parse(s)).ToArray();

【讨论】:

    【解决方案2】:

    我猜你也想在转换时去掉;。我想你想做这样的事情:

    byte[] result = Encoding.UTF8.GetBytes(s.Replace(";",""));
    

    如果原始字节数组实际上包含有效数据;,这将失败,但在这种情况下,您将遇到很多问题,因为您的“CSV”文件格式错误。

    【讨论】:

      【解决方案3】:

      考虑使用Split String

      【讨论】:

      • 谢谢,但它帮不了我!我想用“;”分割我的字符串然后将其放入数组中,然后将其转换为字节 []
      【解决方案4】:

      StringBuilder 将代替 String 有用(性能方面)。

      StringBuilder:

      byte[] buffer = System.Text.Encoding.UTF8.GetBytes(objStringBuilder.ToString());
      

      String:

      byte[] buffer = System.Text.Encoding.UTF8.GetBytes(objString);
      

      【讨论】:

        【解决方案5】:
        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        return encoding.GetBytes(yourStringVariable);
        

        【讨论】:

        • 值是“打印”的,有些 32 是“32”而不是“”,正如您的代码所期望的那样
        【解决方案6】:

        我知道你现在已经知道答案了......但是这段代码解决了这个问题,我希望它可以帮助其他人。

                int counter= 0;
                string cadena = "8,5,6,3,4,6,3"
                string[] foto = cadena.Split(',');
                byte[] fotoFinal = new byte[foto.Length];
                foreach (string s in foto)
                {
                    fotoFinal[contador] = Convert.ToByte(s);
                    counter++;
                }
        

        【讨论】:

          【解决方案7】:
          str.Split(new char[]{';'}, 
                    StringSplitOptions.RemoveEmptyEntries).Select(s => byte.Parse(s)).ToArray();
          

          【讨论】:

          • 谢谢,但它帮不了我!我想用“;”分割我的字符串然后将其放入数组中,然后将其转换为字节 []
          • 试试这个:Encoding.UTF8.GetBytes(str.Replace(";", string.Empty);
          • 不会工作 byteArray[i].ToString() + ";"不将字节值连接为 char,而是使用 1-3 char pr。字节
          【解决方案8】:

          简单:)

          public static byte[] Bytes ( this string Key )
          {
              return Enumerable.Range(0, Key.Binary().Length / 8 )
                               .Select(Index => Convert.ToByte(
                                   Key.Binary().Substring(Index * 8, 8), 2))
                               .ToArray();
          }
          

          【讨论】:

            【解决方案9】:
            string[] sbytes   = sl.Split(',');
                                byte[] b          = new byte[sbytes.Length];
                                for (int j = 0; j < sbytes.Length; j++)
                                {
                                    byte newByte  = byte.Parse(sbytes[j], System.Globalization.NumberStyles.HexNumber);
                                    b[j]          = newByte;
                                }
            

            我喜欢使用数字样式的十六进制数字。

            【讨论】:

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