У меня есть строка шестнадцатеричных значений ...
String hexString = "8A65";
Мне нужно преобразовать эту строку в их эквиваленты в Юникоде. Сложность в том, что мне нужно поддерживать разные кодовые страницы, и некоторые кодовые страницы имеют «8A65» = один символ, тогда как другие кодовые страницы преобразуют его в два символа.
У меня нет предварительных сведений о том, какую кодовую страницу я буду использовать, пока мне не потребуется выполнить преобразование.
Я пробовал все виды вещей, таких как
byte[] original = Encoding.Unicode.GetBytes(hexString);
byte[] conv= Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(932), orig);
char[] chars = Encoding.GetEncoding(932).GetChars(conv);
Примечание: кодовая страница 932 на японском языке
РЕШЕНИЕ
string hexString = "8A65";
int length = hexString.length;
byte[] bytes = new byte[length / 2];
for (int i = 0; i < length; i += 2)
{
bytes[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16);
}
char[] chars = Encoding.GetEncoding(932).GetChars(bytes);
Спасибо, pstrjds, вы спасатель!