我正在尝试将 Ascii 字符串复制到字节数组,但无法复制。如何?
这是我迄今为止尝试过的两件事。没有一个有效:
public int GetString (ref byte[] buffer, int buflen)
{
string mystring = "hello world";
// I have tried this:
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
buffer = encoding.GetBytes(mystring);
// and tried this:
System.Buffer.BlockCopy(mystring.ToCharArray(), 0, buffer, 0, buflen);
return (buflen);
}
Run Code Online (Sandbox Code Playgroud)
如果缓冲区足够大,你可以直接写它:
encoding.GetBytes(mystring, 0, mystring.Length, buffer, 0)
Run Code Online (Sandbox Code Playgroud)
但是,您可能需要先检查长度;测试可能是:
if(encoding.GetMaxByteCount(mystring.length) <= buflen // cheapest first
|| encoding.GetByteCount(mystring) <= buflen)
{
return encoding.GetBytes(mystring, 0, mystring.Length, buffer, 0)
}
else
{
buffer = encoding.GetBytes(mystring);
return buffer.Length;
}
Run Code Online (Sandbox Code Playgroud)
在那之后,有什么做的,因为你已经通过buffer了通过ref。不过,就我个人而言,我怀疑这ref是一个糟糕的选择。没有必要在BlockCopy这里,除非你是从一个临时缓冲区复制,即
var tmp = encoding.GetBytes(mystring);
// copy as much as we can from tmp to buffer
Buffer.BlockCopy(tmp, 0, buffer, 0, buflen);
return buflen;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12888 次 |
| 最近记录: |