关于二进制流的写法

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

怎么样才能将一个字符串变成符合这样的二进制流呢?
...全文
177 点赞 收藏 8
写回复
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就可以了。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告