我已按照代码将字符串转换为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)
答案 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