Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Unicode UTF-16 
V
    Опции темы
Geniebal
Дата 16.7.2010, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



столкнулся с такой проблемой: у меня есть массив в hex-формате. Заранее известно что он содержит строку в UTF-16LE. Подскажите как привести это к человеческому виду? т.е. из UTF-16 к виду доступному для понимания пользователя.

З.Ы. из hex'a в dec переводить надо?
PM MAIL   Вверх
Snowy
Дата 16.7.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Мало данных.
Что ещё за массив в hex-формате? В дельфи нет такого понятия.
И почему UTF-16 (WideString) вдруг стал непонятен для пользователя?
PM MAIL   Вверх
Geniebal
Дата 19.7.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



400000002800000000000000000006001000000018000000e2cc6e2d18b31446bc050c8de5616e1350000000800000000000180000000200680000001800000001000480480000005800000000000000140000000200340002000000000014009f011200010100000000000512000000000018009f0112000102000000000005200000002002000001020000000000052000000020020000010200000000000520000000200
Код

20000600000001800000000001800000003000000000018000000700000002800000000001800000004000c000000180000000000000000000000

это есть hex-массив.
по идее в нем храниться имя тома в UTF-16LE формате. Как из этого получить буквенно-символьный вариант понятный для пользователя? 
PM MAIL   Вверх
Keeper89
Дата 19.7.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58





--------------------
PM MAIL WWW   Вверх
Snowy
Дата 19.7.2010, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Из этого - никак.
Это совсем не похоже на UTF-16, даже приблизительно.
PM MAIL   Вверх
Geniebal
Дата 19.7.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Цитата

Это совсем не похоже на UTF-16, даже приблизительно.


Это дамп в 16-тиричном виде. А вот как его преобразовать к человеческому виду - это и есть вопрос?
PM MAIL   Вверх
Snowy
Дата 19.7.2010, 14:51 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Повторяю - никак.
Данный набор байт не имеет никакого отношения к тексту.
Не только UTF-16, а вообще ни к какому тексту.
То есть говоря просто - это не текст. Ни в какой бы то ни было кодировке.

Добавлено через 3 минуты и 44 секунды
Текст в UTF-16LE выглядит вот так:
1C 04 30 04 3C 04 30 04 20 00 3C 04 4B 04 3B 04 30 04 20 00 40 04 30 04 3C 04 43 04
У тебя же сплошные нули - это вообще какой-то мусор.
PM MAIL   Вверх
Geniebal
Дата 21.7.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



Код

500072006f0062006100

Вот это точно utf-16. вопрос - как его дать проге (т.е. какой функции), чтоб мне вывела уже в нормальных знаках

Добавлено @ 16:48
есть же функция UTF8Dencode  а для UTF-16 есть что то подобное?


Это сообщение отредактировал(а) Geniebal - 22.7.2010, 08:23
PM MAIL   Вверх
Snowy
Дата 22.7.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



А для UTF-16 есть знак :=
Код
var
  s: string;
  i: integer;
  p: array of byte;
  n: integer;
begin
  s := '500072006f0062006100'; // исходные данные
  n := Length(s) div 2;
  SetLength(p, n);
  for i := 0 to n - 1 do // превращаем строку в массив байт
    p[i] := StrToInt('$' + copy(s, i*2+1, 2));
  s := PWideChar(@p[0]); // превращаем массив байт в строку просто приравнивая WideString
  ShowMessage(s);
end;

PM MAIL   Вверх
Geniebal
Дата 26.10.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.