2010-07-14 18 views
0

我跟随代码,以使一个字符串到CFString字符串:CFString为字符串?

internal static byte[] StringToCFString(string value) 
    { 
     byte[] b; 

     b = new byte[value.Length + 10]; 
     b[4] = 0x8c; 
     b[5] = 07; 
     b[6] = 01; 
     b[8] = (byte)value.Length; 
     Encoding.ASCII.GetBytes(value, 0, value.Length, b, 9); 
     return b; 
    } 

    public static byte[] StringToCString(string value) 
    { 
     byte[] bytes = new byte[value.Length + 1]; 
     Encoding.ASCII.GetBytes(value, 0, value.Length, bytes, 0); 
     return bytes; 
    } 

我怎样才能得到一个CFString字符串到字符串回来? (C#.NET 2.0)

回答

1

我会尝试这样的事情......

Encoding.ASCII.GetString(value, 9, value.Length - 9); 
3
private String CFString2String(IntPtr intPtr) 
{ 
    byte size = Marshal.ReadByte(intPtr, 8); 
    byte[] b = new byte[size]; 
    Marshal.Copy(IntPtr.Add(intPtr, 9), b, 0, size); 
    return Encoding.ASCII.GetString(b); 
} 
+0

此代码的某些解释可能有用 – 2012-10-16 22:06:04

0

这个代码是错误 的参数 “价值” 是UTF8字符串 如中国。

,如果你需要CFString字符串到字符串返回

请使用与构造CFString字符串(IntPtr的PTR)

的参数CoreFoundation.CFString “PTR” 是一个指向CFString字符串。

CoreFoundation.CFString - >https://github.com/isnowrain/CoreFoundation