Два пути:
public static byte[] StrToByteArray(this string s)
{
List<byte> value = new List<byte>();
foreach (char c in s.ToCharArray())
value.Add(c.ToByte());
return value.ToArray();
}
И,
public static byte[] StrToByteArray(this string s)
{
s = s.Replace(" ", string.Empty);
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
я склонен использовать нижнюю часть еще один часто, чем вершина, не сравнили их для скорости.
Не обязательно. Однако C ++ / CLI убирает большую часть синтаксического сахара вокруг неэффективных способов выполнения вещей, которые присутствуют в C # (например, бокс).
Кроме того, C ++ / CLI позволяет вам гораздо более чистое взаимодействие с неуправляемым кодом, фактически позволяя вам смешивать управляемый и неуправляемый код, который имеет решающее значение для производительности, может быть полезным.
РЕДАКТИРОВАТЬ:
См. этот пост, чтобы узнать о некоторых различиях: http://msdn.microsoft.com /en-us/library/ms379617(VS.80).aspx
Поскольку оба они работают на платформе .NET, я бы сказал, что любая разница в производительности будет незначительной. Любая разница почти наверняка будет зависеть от того, насколько хорошо работают компиляторы, которые вы используете.
Ну, краткий ответ - нет . Почему? Ссылочные типы в C ++ / CLI скомпилированы в MSIL, как и в C #.
Хорошая вещь в C ++ / CLI (и в длинном ответе) заключается в том, что вы можете легко вызывать собственный код, который (во многих случаях) быстрее. При этом, если вы пишете собственный класс C ++ и ожидаете, что он будет выполняться изначально при вызове кем-либо из управляемого класса, этот собственный класс C ++ должен быть скомпилирован без поддержки CLR ( этот вопрос касается того, как сделай это).
Любой управляемый код, написанный на C ++ / CLI, будет, по сути, точно таким же, как эквивалентный C #, при условии точности компилятора, поскольку оба они в конечном итоге будут инструкциями промежуточного языка. Однако C ++ / CLI позволяет легко смешивать неуправляемый код с управляемой частью, что может обеспечить значительный выигрыш в скорости при хорошей оптимизации.
Увидев оба варианта. NET-языки, которые компилируются в один и тот же байт-код, который, в свою очередь, запускается на той же виртуальной машине, я бы сказал, в общем, нет.
C ++ / CLI действительно предназначен только для обеспечения языкового взаимодействия между .NET и C ++.