如何从字符串中获取包含空终止符的字节? - c#

您好StackOverflowers,

我在某处读到C#字符串不是以null结尾的。很好!但我想知道该方法:

byte[] myBytes = Encoding.ASCII.GetBytes(myString);

在数组的末尾添加一个空终止符,或者是否必须手动执行? (将使用此数组的C系统确实需要它)。

如果是手动的,我想方法是:

byte[] myBytes = Encoding.ASCII.GetBytes(myString + '\0');

数据应为ASCII,无需担心编码。

参考方案

在数组的末尾添加一个空终止符,或者如果我必须手动执行的话

TL; DR-视情况而定。对于纯.NET开发,您不需要它。如果您打算对本地代码使用p调用,那么.NET可以为您完成翻译,因此您也不必这样做。

我在某处读到C#字符串不是以null终止的地方

正确。

MSDN:

字符串是String类型的对象,其值为文本。在内部,文本存储为Char对象的顺序只读集合。 C#字符串的末尾没有以null结尾的字符;因此,C#字符串可以包含任意数量的嵌入式空字符('\ 0')。字符串的Length属性表示它包含的Char对象的数量,而不是Unicode字符的数量。 -Tell me more...

OP:

但我想知道方法byte[] myBytes = Encoding.ASCII.GetBytes(myString);
在数组的末尾添加一个空终止符,或者如果我必须手动执行的话

不,它不是,您也不需要,除非您当然希望通过p调用将字符串传递给本机代码,但这是一个完全不同的问题(无论如何,.NET都会为您处理)。

string.Format不带小数位会产生意外的舍入 - c#

我需要更新一些现有代码,以便(有条件地)显示数字而没有小数位。根据是否需要“£”符号使用以下两行。currency = string.Format(CultureInfo.CurrentCulture, "{0:£#,0.00}", data); 要么currency = string.Format(CultureInfo.Current…

Java string.hashcode()提供不同的值 - java

我已经在这个问题上停留了几个小时。我已经注释掉所有代码,认为这与数组超出范围有关,但是这种情况仍在发生。我正在尝试使用扫描仪从文件中读取输入,存储数据并稍后使用哈希码获取该数据。但是哈希值不断变化。public static void main(String[] args) { //only prior code is to access data char…

string.split(“ _(B”) - java

基本上,这行代码行不通,我不确定原因: String[] stringHolder = string.split("_(B"); 我收到此错误:索引3附近的未封闭组此行代码有效: String[] stringHolder = string.split("_B"); 因此,这使我相信它是由“(”引起的。有人可以告诉我如…

php-ga解析错误:语法错误,意外的T_STRING - php

我正在尝试进行服务器端Google Analytics(分析)跟踪,并遇到了php-ga。由于某种原因,这会引发错误:解析错误:语法错误,意外的T_STRING,在第85行的/home/priedelc/public_html/refll/api_ga.php中预期为T_CONSTANT_ENCAPSED_STRING或'('-其中85是使用UnitedPr…

Java String.substring()与Oracle 11g列VARCHAR2大小之间的字符串长度定义不一致 - java

我用这样的表设置数据库:CREATE TABLE t_audit_log ( description VARCHAR2 (2500) ); 在使用它的Java应用程序中,我使用Hibernate将数据类映射到它上,并确保不生成SQLExceptions,将这种截断算法放在属性getter中:private static final int MAX_STRIN…