unsafe
土地へようこそ。
私は、ASCIIまたはUTF-16のいずれかである可能性のある長さ不明の管理されていないバイトバッファの形式で、0で終了するCスタイルの文字列を提供するレガシーライブラリに対してP/Invokeを実行していますが、その兆候はまったくありません-バイトストリーム自体以外は...
String
現在、マネージドfromChar*
またはを作成する必要があるかどうかを判断するために、シングルおよびダブル 0 バイトのチェックに基づく悪いスキームがありますSByte*
。このスキームは、 より高いすべての Unicode コードポイントで明らかに崩壊しますU+00FF
。
これは私が持っているものです:
- アンマネージド バイト バッファーのアドレス。
- アンマネージ バイト バッファの長さは不明です。
- アンマネージ バイト バッファーは、0 で終わる ASCII C スタイル文字列または 0 で終わる UTF-16 C スタイル文字列のいずれかです。
これは私が欲しいものです:
String
ASCII か UTF-16 かを問わず、アンマネージ バイト バッファから正しいマネージを作成します。
その問題は一般的に解決可能ですか?