我有一個隨機緩衝區。 我需要將它編碼爲unicode字符串(utf16 LE,由windows wide-char規範使用),因此它可以用作PWSTR。例如,當調用StringCchPrintfW時作爲unicode字符串有效地表示一個緩衝區
一個可能的解決方案可以是使用base64。但爲了使它成爲一個Unicode字符串,我將不得不在每個字符後添加一個零字節,這在空間上效率很低。
如果我只打印緩衝區,它可能包含會終止字符串的'\ 0',或者會影響格式化的'%'(也許它可能會被轉義),或者會阻止其他的Unicode字符它被用於格式化。
生成要打印的字符串並在最後解析的代碼將用C#編寫,但緩衝區將在Windows C++中用於格式化並寫入文件。
你有*什麼*的緩衝區?人物?在什麼編碼?爲什麼在使用base64的時候,你有本地函數[將窄多字節字符緩衝區轉換爲寬字符字符緩衝區](https://msdn.microsoft.com/en-us/library/dd319072.aspx)(使用UTF- 16)?另見例如[此頁面全是轉換示例](https://msdn.microsoft.com/en-us/library/ms235631.aspx)。 –
a)那麼你的意思是如何將任意二進制數據表示爲字符串? b)你不是指Unicode,而是UFT16。 c)是的,它對於base64來說是空間低效的,並且有更好的東西(UTF8),但是WIndows需要UTF16。 d)如果編碼正確,\ 0不應該成爲問題。明確地在某處保存長度。 – deviantfan
或者轉換爲任何格式並使用您選擇的壓縮算法將其壓縮存儲。 –