2010-07-14 23 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