Показать сообщение отдельно
Старый 05.04.2011, 22:32   #1
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Задачка - байты и текст

Это скорее задачка, а не загадка.
Рассчитана на тех кто интересуется работы с текстом, конвертация в другие типы данных, используя разные кодировками и криптование.
Далее будет усложнятся, и использоваться не только кодировка, но и криптование.

Первый Текст
Используется UTF16 (Unicode) кодировка. То есть, 16 бит на символ. Нужно преобразовать последовательность цифр в виде длинной строки, в текст используя данные о кодировки.
Выведите текст который "хранится" за этими числами.

Перечисленные цифры для расшифровывания:
1069 1092 1092 1077 1082 1090 32 1044 1072 1085 1085 1080 1085 1075 1072 45 1050 1088 1102 1075 1077 1088 1072 32 8212 32 1082 1086 1075 1085 1080 1090 1080 1074 1085 1086 1077 32 1080 1089 1082 1072 1078 1077 1085 1080 1077 44 32 1082 1086 1090 1086 1088 1086 1077 32 1079 1072 1082 1083 1102 1095 1072 1077 1090 1089 1103 32 1074 32 1090 1086 1084 44 32 1095 1090 1086 32 171 1083 1102 1076 1080 44 32 1080 1084 1077 1102 1097 1080 1077 32 1085 1080 1079 1082 1080 1081 32 1091 1088 1086 1074 1077 1085 1100 32 1082 1074 1072 1083 1080 1092 1080 1082 1072 1094 1080 1080 44 32 1076 1077 1083 1072 1102 1090 32 1086 1096 1080 1073 1086 1095 1085 1099 1077 32 1074 1099 1074 1086 1076 1099 32 1080 32 1087 1088 1080 1085 1080 1084 1072 1102 1090 32 1085 1077 1091 1076 1072 1095 1085 1099 1077 32 1088 1077 1096 1077 1085 1080 1103 44 32 1085 1086 32 1085 1077 32 1089 1087 1086 1089 1086 1073 1085 1099 32 1086 1089 1086 1079 1085 1072 1074 1072 1090 1100 32 1089 1074 1086 1080 32 1086 1096 1080 1073 1082 1080 32 1074 32 1089 1080 1083 1091 32 1089 1074 1086 1077 1075 1086 32 1085 1080 1079 1082 1086 1075 1086 32 1091 1088 1086 1074 1085 1103 32 1082 1074 1072 1083 1080 1092 1080 1082 1072 1094 1080 1080 187


Мой вариант функции расшифровывания на C#:
private string Decode (string source) {
    string[] numbers = source.Split(' ');
    byte[] bytes = new byte[numbers.Length*2];

    for (int i=0;i<numbers.Length;++i) {
        byte[] pair = BitConverter.GetBytes((short)int.Parse(numbers[i]));
        bytes[i*2]   = pair[0];
        bytes[i*2+1] = pair[1];
    }

    return UnicodeEncoding.Unicode.GetString(bytes);
}

Последний раз редактировалось moka, 06.04.2011 в 03:51.
(Offline)
 
Ответить с цитированием