我有一大块二进制数据,其中包含具有偏移量然后是字符串的结构; 在C ++中很容易:
struct foo
{
int offset;
char * s;
}
void * data;
... data is read and set
foo * header = (foo*) data;
header->s = (int)header-> + (int)data;
int len = strlen(header->s);
char* ns = new char[len+1];
strcpy(ns,header->s);
够简单...... 在C#你会怎么做? 最大的问题是我不知道字符串的长度。它被终止。
我将byte[]
和IntPtr中的数据存储到内存中,但我需要一个指向该数据的字符串aa字符串(char *
),我可以得到字符串的长度。
答案 0 :(得分:-1)
C#是一种高级语言,使用指针对这种语言来说简直不自然。
要将数据从字节数组转换为字符串,可以使用BitConverter
类:
BitConverter.ToInt32(byte_array, start index);
要将其转换为字符串,您可以使用StringBuilder
类:
StringBuilder str = new StringBuilder();
// i=starting index of text
for (int i = 3; i<byte_array.Length; i++)
str.Append(byte_array[i];
return str.ToString();
如果字符串后面有更多数据,则可以为循环byte_array[i]!=0
设置停止条件,当它停止时,byte_array[i]
将成为字符串终止符。保存i
的值,然后您可以获取数据。
另一种方法是使用ASCIIEncoding.ASCII.GetString()
方法:
ASCIIEncoding.ASCII.GetString(byte_array, start_index, bytes_count);