牛翔没人爱 2021-02-04 20:44 采纳率: 66.7%
浏览 26

怎么获得string的特殊bytes

解码一个二进制文件,其中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
    
}
  • 写回答

1条回答 默认 最新

  • 粉墨小克 2021-03-05 10:52
    关注

    如果你知道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 这是我的个人博客,有问题可以留言一起讨论

    评论

报告相同问题?