Как преобразовать код в символы, уже только какие костыли не приделал все равно что то да не работает
Пробовал так..
namespace test
{
class MainClass
{
public static void Main (string[] args)
{
//1 вариант
string[] arrayCode = {"6c", "52"};
Console.WriteLine (Encoding.GetString(BitConverter.GetBytes(Convert.ToInt32(arrayCode[0]))));
//2 вариант
Encoder.ToChar(arrayCode[i]);
}
}
}
Выдает ошибку
1) an object reference is required to access non-static member
2) коды русских символов не помещаются в char, тут ошибка превышения размера
1 - Не понимаю что он хочет(
2 - Может это можно решить через char?
Ответ
Например, так:
string[] arrayCode = {"6c", "52"};
var bytes = arrayCode.Select(s => Convert.ToByte(s, 16));
var result = Encoding.UTF8.GetString(bytes.ToArray());
(для UTF-8).
Если в строках не байты, а целые символы, по идее пойдёт такой код:
static void Main(string[] args)
{
string[] arrayCode = {"6c", "52", "90d0"};
var chars = arrayCode.Select(s => ExtractChar(s, Encoding.UTF8));
var result = new string(chars.ToArray());
}
static char ExtractChar(string s, Encoding enc)
{
var code = Convert.ToInt32(s, 16);
var bytes = BitConverter.GetBytes(code);
var nbytes = (s.Length + 1) / 2;
var result = enc.GetString(bytes, 0, nbytes);
if (result.Length != 1)
throw new ArgumentException("В строке не один символ");
return result[0];
}
Комментариев нет:
Отправить комментарий