2013-10-23 26 views
0

获取UTF-16字节我要填充与来自UTF-16编码的字符串的字节的缓冲器的一部分而不分配一个中间字节阵列(即,没有调用Encoding.Unicode.GetBytes(str)而不调用Encoding.Unicode.GetBytes

假设那我知道一个字符串只包含ASCII个字符,下面的代码是否安全?

 for (var i = 0; i < str.Length; i++) 
     { 
      var code = char.ConvertToUtf32(str, i); 

      var high = (byte) (code & 0xFF); 
      var low = (byte) ((code >> 8) & 0xFF); 

      //k is the offset where we insert bytes of the UTF-16 encoded string 

      buffer[i*2 + k] = high; 
      buffer[i*2 + k + 1] = low; 
     } 

回答

1

GetBytes有一个超载,可以做你想做的。

Encoding.Unicode.GetBytes(str, 0, str.Length, buffer, k); 
// or, if you need to do something more complicated inside the `for` loop 
for (var i = 0; i < str.Length; i++) 
{ 
    Encoding.Unicode.GetBytes(str, i, 1, buffer, i*2 + k); 
} 
相关问题