Я хочу сравнить первые несколько байтов в байте [] со строкой. Как я могу это сделать?Как сравнить байт [] с строкой?
ответ
Вы должны знать кодировку массива байтов, чтобы правильно сравнивать их.
Например, если вы знаете, что ваш массив состоит из UTF-8 байт, то вы можете создать строку из массива байт:
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
string s = enc.GetString(originalBytes);
Теперь вы можете сравнить строки s в свою другую строку.
И наоборот, если вы хотите сравнить только первые несколько байт, вы можете преобразовать строку в массив байтов UTF8:
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
byte[] b = enc.GetBytes(originalString);
Теперь вы можете сравнить массив байтов б в свой другой массив байтов.
Есть несколько других объектов кодировки для ASCII, Unicode и т.д. See the MSDN page here.
Не лучше ли сравнивать байты вместо строк? –
+1 Хорошее редактирование;) –
@Josh: Как вы думаете, что такое сравнение строк? Беспокойство об этом, вероятно, является микрооптимизацией. – jason
использование
byte [] fromString = Encoding.Default.GetBytes("helloworld");
Можете ли вы привести пример того, что вы пытаетесь сделать? –