CFString для строки? - PullRequest
       2

CFString для строки?

0 голосов
/ 14 июля 2010

У меня следующий код для создания строки в 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 ]

3 голосов
/ 17 октября 2012
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 голос
/ 14 июля 2010

Я бы попробовал что-то вроде этого ...

Encoding.ASCII.GetString(value, 9, value.Length - 9);
0 голосов
/ 28 февраля 2014

этот код является ошибкой, когда параметр "value" является строкой utf8, например, на китайском языке.

, если вам нужно CFString для возврата строки

, используйте CoreFoundation.CFString с конструктором CFString (IntPtrptr)

параметр "ptr" является указателем на CFString.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...