IntPtr 转 string

简介: 假设有 intPtr pBuffer 方法一: 直接使用Marshal.PtrToStringAnsi方法: string ss = Marshal.PtrToStringAnsi(pBuffer); 但,如果pBuffer中有\0,此方法所获取的字符串会被截断。

 

假设有 intPtr pBuffer

方法一:

直接使用Marshal.PtrToStringAnsi方法:

string ss = Marshal.PtrToStringAnsi(pBuffer);

但,如果pBuffer中有\0,此方法所获取的字符串会被截断。这种情况要用方法二。

 

方法二:

先转为byte数组,然后再转string:

byte[] cc = new byte[dwBufSize];
Marshal.Copy(pBuffer, cc, 0, (int)dwBufSize);
string ss = Encoding.ASCII.GetString(cc);//.Replace("dhav", "").Replace("DHAV", "");

 

搞定!!

相关文章
|
6月前
|
Java API 索引
|
1月前
|
C++ 容器
|
6月前
|
算法 Linux C语言
【c++】string
【c++】string
51 1
|
缓存 安全 Java
关于 String 那些不得不说的那些事
关于 String 那些不得不说的那些事
string.gsub
string.gsub
287 0
string trimming
string trimming
127 0
string.gmatch
string.gmatch
182 0
|
存储 缓存 Java
你并不了解 String
你并不了解 String
你并不了解 String
|
缓存 安全 Java
String 为什么不可变 ?
String 为什么不可变 ?
String 为什么不可变 ?
|
Java 存储
LearnJava(二) String
String类源码 public final class String implements java.io.Serializable, Comparable, CharSequence { /** The value is used for character storage.
851 0