Доброе время суток! У меня есть массив 04 01 00 63 04 5E как мне с етого массива Unicode получить AnsiString ? Зарание благодарен
Кажется вот так: Код (Text): mov edi,offset AnsiBuffer mov esi,offset Massiv mov ecx,MassivSize @@: mov al,[esi] mov byte ptr [edi],al add esi,2 inc edi dec ecx dec ecx jnz @B mov byte ptr [edi],0
Flasher твой алгос можно упростить до Код (Text): mov edi,offset AnsiBuffer mov esi,offset Massiv mov ecx,MassivSize @@: inc esi movsb sub ecx, 2 jnz @B mov byte ptr [edi],0 Но он будет верным только для символов из стандартной латиницы (a-z; A-Z; 0-9) Для всех остальных кодировок - НЕТ. Используй WideCharToMultiByte(), как уже советовали выше. Самый правильный вариант.
Иногда удобнее конвертить unicod туда обратно через wsprintf(A/W) с ключём %W, хотя скорее всего она вызывает те же WideCharToMultiByte\MultiByteToWideChar с текущей кодовой страницей.