Jac*_*ter 1 c# clr unmanaged utf-8 unmanaged-memory
我需要将C#字符串写入编码为Utf8的预分配非托管缓冲区.在回答之前,请阅读以下要求:
目前,我正在使用OpCodes.Cpblk将原始字符串从C#复制到使用16位字符的非托管缓冲区.这给了我与在x64架构上使用非托管memcpy大致相同的性能,我真的需要吞吐量接近它.
我正在考虑将字符串固定为char*并对其进行迭代,但实现不带跳转表的编码器既麻烦又不太理想.
使用不安全的过载
public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int charCount)
Run Code Online (Sandbox Code Playgroud)
UTF8Encoding类的.您需要指定指向字符串的指针和将接收字符的字节缓冲区.它会将UTF-8字符复制到其中.不会发生任何分配,但需要不安全的代码.
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |