如何将字符串转换为;空终止字节数组“;在C#中?

如何将字符串转换为;空终止字节数组“;在C#中?,c#,arrays,.net,type-conversion,C#,Arrays,.net,Type Conversion,假设我的字符串是“John Doe” 如何将其转换为字节数组 目前我只有将字符串转换为字节数组的代码,但是如何将i转换为以空结尾的字节数组呢 非常感谢使用字符串长度+1初始化数组 将字节数组中的最后一个字节设置为空字符应该是一个技巧,而不必深入了解可能需要它的原因。我假设它是用于串行端口、套接字或文件等 您可以使用: byte[] bytes = Encoding.ASCII.GetBytes("John Doe\0"); 如果您真的很无聊,可以创建一个字符串或字节数组扩

假设我的字符串是“John Doe”

如何将其转换为字节数组

目前我只有将
字符串
转换为字节数组的代码,但是如何将i转换为以空结尾的字节数组呢


非常感谢

使用字符串长度+1初始化数组


将字节数组中的最后一个字节设置为空字符应该是一个技巧,而不必深入了解可能需要它的原因。我假设它是用于串行端口、套接字或文件等

您可以使用:

byte[] bytes = Encoding.ASCII.GetBytes("John Doe\0");

如果您真的很无聊,可以创建一个字符串或字节数组扩展方法:

public static string ToNullTerminatedString(this string source) 
    => source + '\0';   

public static byte[] ToNullTerminatedArray(this byte[] source)
{
    byte[] newArray = new byte[source.Length + 1];
    source.CopyTo(newArray, 0);
    return newArray;
}

以null结尾的字节字符串(NTBS)是一个非零字节序列,后跟一个值为零的字节(以null结尾的字符)。因此,只需在结尾处添加一个值为零值的字节作为警告:与C或WINAPI代码互操作通常需要以Null结尾的字节数组。将字符串转换为以null结尾的字节数组是由互操作层自动完成的,因此,除非您有非常特殊的要求,否则通常不需要自己完成。如果你通过谷歌找到这个问题,请考虑你。这将是最简单的方法。如果字符串是什么,那么在endeasy处追加\0,但效率很低-我想这一切都取决于吞吐量-如果吞吐量很重要,有更好的方法来实现这一点,但话说回来:通常情况下,它确实没有t@MarcGravell有趣的是,当我写这篇文章时,我真的想过要提到分配,马克·格雷威尔突然想起我说:P@TheGeneral我的人生使命就是成为你心中的那个唠叨的声音(“你的将军”,而不是“你的将军”-eek!)在嘀咕着什么
public static string ToNullTerminatedString(this string source) 
    => source + '\0';   

public static byte[] ToNullTerminatedArray(this byte[] source)
{
    byte[] newArray = new byte[source.Length + 1];
    source.CopyTo(newArray, 0);
    return newArray;
}