【问题标题】:How can i encode a string to UTF-8 to a pre existing byte array?如何将字符串编码为 UTF-8 到预先存在的字节数组?
【发布时间】:2018-05-13 21:28:17
【问题描述】:

我有一段简单的代码,它通过将 C# 字符串编码为 UTF-8,然后从中创建一个字节数组来转换它。但我想知道如何使用我已经在起始索引处创建的字节数组编码为 UTF-8?

这就是我当前编码和获取结果字节数组的方式:

byte[] result = Encoding.UTF8.GetBytes(myString);

但我有一个预制的字节数组,如果有意义的话,我更愿意在特定索引处写入。有没有内置的方法可以做到这一点,如果没有,我该怎么做?

【问题讨论】:

  • 使用 GetBytes 的其他重载...
  • 编码后是否需要再次使用字节,还是需要字符串?
  • @mikez 啊该死的我不知道存在超载。我的错。谢谢你:)

标签: c# arrays string encoding utf-8


【解决方案1】:

GetBytes 有另一个重载写入现有数组:

  byte[] bytes = new byte[1000]; // sample, make sure it has enough space
  var specificIndex = 0;
  var actualByteCount = Encoding.UTF8.GetBytes(
     myString, 0, myString.Length, bytes, specificIndex); 

不要忘记处理结果以了解数组中实际表示字符串的字节数 (actualByteCount)

请注意,您可能需要使用 GetByteCount 来获得正确的数组大小或调整要转换的字符数以适合您的缓冲区。

【讨论】:

    【解决方案2】:

    首先,您需要将字节转换为 Base64String,然后将其转换为字节。喜欢这个:

    byte[] random = new byte[] { 0x00C9, 0x00C9, 0x00C9 };
    
    byte[] encodedBytes = Encoding.UTF8.GetBytes(Convert.ToBase64String(random));
    

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2016-12-08
      • 2013-05-11
      • 2011-08-16
      • 1970-01-01
      • 2011-08-09
      • 2020-07-17
      • 2014-01-18
      • 2011-08-27
      相关资源
      最近更新 更多