【发布时间】:2018-07-17 13:02:52
【问题描述】:
你好 StackOverflowers,
我在某处读到 C# 字符串不是以空值结尾的。没问题!但我想知道方法:
byte[] myBytes = Encoding.ASCII.GetBytes(myString);
在数组末尾添加一个空终止字符,或者我必须手动执行吗? (将使用该数组的 C 系统确实需要它)。
如果是手动的话,我猜方法是:
byte[] myBytes = Encoding.ASCII.GetBytes(myString + '\0');
数据是ASCII,不用担心编码。
【问题讨论】:
-
如果您的问题基本上归结为“我如何正确地将字符串编组为期望以空字符结尾的字符串的非托管代码?”那么您可以选择完全不同的选项和答案。
-
您是否通过 P/Invoke 将其传递给非托管函数?因为如果是这样,你可能做错了......如果你正确地声明你的 P/Invoke,NUL 字符将被自动添加。
标签: c# string null byte termination