如何将字符串编码为UTF-8到现有的字节数组?

时间:2017-11-30 02:57:28

标签: c# arrays string encoding utf-8

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

所以这就是我目前编码和得到结果字节数组的方式:

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

但我有一个premade的字节数组,如果有意义的话,我更愿意写一个特定的索引。有没有内置的方法来做到这一点,如果不是我会怎么做呢?

2 个答案:

答案 0 :(得分: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来获取正确的数组大小或调整要转换为适合缓冲区的字符数。

答案 1 :(得分:-1)

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

byte[] random = new byte[] { 0x00C9, 0x00C9, 0x00C9 };

byte[] encodedBytes = Encoding.UTF8.GetBytes(Convert.ToBase64String(random));