CFString到字符串?

时间:2010-07-14 19:00:33

标签: c# string

我已按照代码将字符串转换为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返回String? (C#.Net 2.0)

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

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

Encoding.ASCII.GetString(value, 9, value.Length - 9);

答案 2 :(得分:0)

此代码有误 当参数“value”是utf8字符串时 比如中国人。

如果你需要CFString to String back

请使用CoreFoundation.CFString和构造函数CFString(IntPtr ptr)

参数“ptr”是指向CFString的指针。

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