0

我有一大块二进制数据,其中包含带有偏移量的结构,然后是字符串;在 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 *),我可以得到字符串的长度。

4

1 回答 1

-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);
于 2012-06-28T16:35:43.780 回答