Byte*怎么转换成string

linguanyu315 2009-09-16 04:18:42
需要把Byte*指针转换成string,Byte*是变长度的,最长1024Byte.
...全文
205 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 soaringbird 的回复:]
如果你要为了观察而显示数据包的内容,可以这么转换,如果解包的话,还是按照我在12楼写的那样做
[/Quote]
我需要观察也需要解包. 你的方法,和你12楼写的都很有帮助,谢谢.
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 soaringbird 的回复:]
那你先得用Marshal.Copy把数据复制到byte[],再用BitConverter.ToString()转换后去掉-了
[/Quote]
谢谢.这个方法可行.谢谢.
l274747948 2009-09-16
  • 打赏
  • 举报
回复
.tostring()
soaringbird 2009-09-16
  • 打赏
  • 举报
回复
如果你要为了观察而显示数据包的内容,可以这么转换,如果解包的话,还是按照我在12楼写的那样做
soaringbird 2009-09-16
  • 打赏
  • 举报
回复
那你先得用Marshal.Copy把数据复制到byte[],再用BitConverter.ToString()转换后去掉-了
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hack95 的回复:]
读取到数组中再ToString()
[/Quote]

用for语句,读去到数组中,再ToString()?这样是不是效率比较低?我有大量数据包要处理.
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hack95 的回复:]
读取到数组中再ToString()
[/Quote]
怎么读取到数组中?
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 soaringbird 的回复:]
你要解码呀,解码不用转成字符串,直接解就是了,一个字节就是一个byte数据,四个字节就是一个int32数据。
还可以这样:*(b+1),下一个字节;*((int*)b+1),下一个整数,Marshal.PtrToStringAnsi((IntPtr)(b+10),20),从第十个字节取20个字节转换成字符串
[/Quote]
谢谢你热情回复.

我的意思是,比如BYTE* b = {00,12,13,ac}

我要在转化成string后,输出显示的还是00,12,13,ac

现在输出的都是ANSI字符了.
柳晛 2009-09-16
  • 打赏
  • 举报
回复
读取到数组中再ToString()
soaringbird 2009-09-16
  • 打赏
  • 举报
回复
你要解码呀,解码不用转成字符串,直接解就是了,一个字节就是一个byte数据,四个字节就是一个int32数据。
还可以这样:*(b+1),下一个字节;*((int*)b+1),下一个整数,Marshal.PtrToStringAnsi((IntPtr)(b+10),20),从第十个字节取20个字节转换成字符串
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
但是打印输出的时候,显示的不是16进制数,而是解码以后的字符了.但是我必须要16进制的数,要对这些数进行进一步的解码处理.
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
ANSI应该是对的.但是打印输出的时候,显示的不是16进制数,而是解码以后的数了.我必须还要对这个string要做解码处理的.
soaringbird 2009-09-16
  • 打赏
  • 举报
回复
主要是看什么编码的,ansi啦、unicode啦,你试试哪个转换后不是乱码就用哪个
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
Byte*里面是16进制数,应该用哪个?我还是只需要16进制数.string里面要是16进制数
soaringbird 2009-09-16
  • 打赏
  • 举报
回复
xxxx是可以指定一个长度。
PtrToStringXXX 指PtrToStringAnsi,PtrToStringAuto,PtrToStringBSTR 等等
soaringbird 2009-09-16
  • 打赏
  • 举报
回复
byte *b;
IntPtr p = (IntPtr)b;
Marshal.PtrToStringXXX(p,xxxx)
linguanyu315 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 libinguest 的回复:]
C# codeBitConverter.ToString
[/Quote]
这个只能转换Byte数组,不能转换Byte*指针,编译的时候通不过.
hanqingyu 2009-09-16
  • 打赏
  • 举报
回复
用Tostring()就好了
风之影子 2009-09-16
  • 打赏
  • 举报
回复
BitConverter.ToString
Dobzhansky 2009-09-16
  • 打赏
  • 举报
回复
前提是知道编码.

不然没法保证所有的都可以转换回来.


IMAP 协议的文字编码就很变态.

110,538

社区成员

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

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

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