解码一个二进制文件,其中string的编码为 02 00 00 00 45 00 4D 00,解析后应得到"EM",其中02 00 00 00 为字符长度标记,后面的是字符串的编码
目前了解可以用mashal对struct进行非托管内存转换。Struct to Byte array
在struct中修改marshalAs不知道能不能达到目的?
struct data
{
[marshalAs(??)]//how to do?
string name
}
解码一个二进制文件,其中string的编码为 02 00 00 00 45 00 4D 00,解析后应得到"EM",其中02 00 00 00 为字符长度标记,后面的是字符串的编码
目前了解可以用mashal对struct进行非托管内存转换。Struct to Byte array
在struct中修改marshalAs不知道能不能达到目的?
struct data
{
[marshalAs(??)]//how to do?
string name
}
如果你知道02 00 00 00 是长度标记, 你就应该知道这是一个4字节(int)的数,把这个16进制的字节数组转成10进制的整型就是2,45 00 4D 00应该就是UTF-8编码的字符串
string str = new UTF8Encoding().GetString(“45 00 4D 00”, 0, 2);
fmxk.ac.cn 这是我的个人博客,有问题可以留言一起讨论