String^ ⇔ array^ の相互変換

String^ ⇔ array^ の相互変換を行うメソッドです。

デフォルトでEUCに変換しているのに深い意味はないです。

array<System::Byte>^ StringToByteArray(String^ src, String^ name)
{
    if ( name == "" ) name = "euc-jp";

    System::Text::Encoding^ enc = System::Text::Encoding::GetEncoding(name);
    return enc->GetBytes(src);
}

String^ ByteArrayToString(array<System::Byte>^ src, String^ name)
{
    if ( name == "" ) name = "euc-jp";

    System::Text::Encoding^ enc = System::Text::Encoding::GetEncoding(name);
    return enc->GetString(src);
}

// おまけ
void StringToArray(String^ from, char* to, int toSize)
{
    System::Text::Encoding^ enc = System::Text::Encoding::GetEncoding("euc-jp");
    array<System::Byte>^ bytes = enc->GetBytes(from);

    int size = bytes->Length;
    if ( size > toSize ) size = toSize;

    pin_ptr<unsigned char> pin = &bytes[0];

    memset(&to[0], 0, toSize);
    memcpy(&to[0], &pin[0], size);
    to[toSize - 1] = '\0';
}