关于二进制流的写法

离子漂浮物 2008-03-21 05:22:34
最近想作一个PDB文件生成器,看过有关资料说PDB记录结构如下:
  PDB文件中的记录内容相对比较简单,主要分为数值类型和字符串类型:
  数值类型:
  数值类型包括UInt32、UInt16、UInt8、LocalID等。
  对于数值类型,只需要直接向PDB文件中写入规定的字节就可以了。如Uint32是32位的无符号整型,可直接写入4个字节,在Winodws编程时相当与DWORD,同样的道理Uint16等同于WORD,可直接写入2个字节,别的数值类型处理也比较类似。其中有一个比较关键的问题,字节顺序问题,在下面的"特别注意事项"章节中描述。
  字符串类型:
  因为每个字符串的长度不一致,所以不能通过写入规定字节数的方法,而是通过在字符串结束后写入0作为结尾。这样读写PDB文件的字符串,就可实现长度可变

怎么样才能将一个字符串变成符合这样的二进制流呢?
...全文
295 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_to_sky 2008-03-24
  • 打赏
  • 举报
回复

nik_Amis 2008-03-23
  • 打赏
  • 举报
回复
PDB是啥?
离子漂浮物 2008-03-23
  • 打赏
  • 举报
回复
谢几位的回答。估计是我问的方式有点问题,本意是想问怎么写入PDB内容的。结果变成这样了,有没人了解PDB格式,如果有的话请告知一下。
PS:PDB文件头我已经了解了。主要是问数据内容的写入。谢谢,结子明天结
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
将字符串变换为二进制流:

byte buf[]=System.Text.Encoding.Default.GetBytes(s);//s就是字符串

不过,PDB文件中如果字符串真是以二进制流存在,那么0恐怕是不能作为结尾的依据的,很多字符的Unicode编码中都会包括0的。
boblaw 2008-03-21
  • 打赏
  • 举报
回复
上面代碼,target就是你所要的
boblaw 2008-03-21
  • 打赏
  • 举报
回复
參考如下代碼

string str = "測試文本";
byte[] bytes = Encoding.UTF8.GetBytes(str);
byte[] target = new byte[bytes.Length + 1];
bytes.CopyTo(target,0);

yilanwuyu123 2008-03-21
  • 打赏
  • 举报
回复
同意楼上 顶起。
cpio 2008-03-21
  • 打赏
  • 举报
回复
把字符串变成byte[],只是长度要再加1,最后一位放0就可以了。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧