Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 29.09.2004
Откуда: Курск
Здорово, народ!!! Вот такая вот задача... Как БЫСТРО сконвертировать однобайтовое число (ASCII-код) в строковый эквивалент, записанный с помощью нулей и единиц...
Ну т.е. было 57 стало "111001" ("00111001")...
Мой вариант, где текст из RichEdit'а преобразуется в строку, стостоящую из нулей и единичек:


AnsiString InitialStream = InitialStreamRichEdit->Text;

int i = 1;
int ASCIICodeBitNumber, ASCIICodeBit;
AnsiString ASCIICodeString = "";

do
{
for (ASCIICodeBitNumber = 7; ASCIICodeBitNumber >= 0; ASCIICodeBitNumber--)
{
ASCIICodeBit = InitialStream[i];
ASCIICodeBit = ASCIICodeBit >> ASCIICodeBitNumber;
ASCIICodeBit = ASCIICodeBit & 1;

ASCIICodeString = ASCIICodeString + ASCIICodeBit;
}
i++;
}
while (i <= InitialStream.Length());



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
быстро говоришь? ... ну-ну
Код:
                mov edi, offset OutBuffer
                mov al,Char
                mov ecx,8
AscizLoop:      xor ah,ah
                shl al,1
                adc ah,"0"
                mov byte ptr [edi],ah
                inc edi
                dec ecx
                jnz AscizLoop
                mov byte ptr [edi],0


Добавлено спустя 12 минут, 36 секунд:
или еще быстрее:
Код:
.const
BinTable label dword
           db  "0","0","0","0"
           db  "0","0","0","1"
           db  "0","0","1","0"
           db  "0","0","1","1"
           db  "0","1","0","0"
           db  "0","1","0","1"
           db  "0","1","1","0"
           db  "0","1","1","1"
           db  "1","0","0","0"
           db  "1","0","0","1"
           db  "1","0","1","0"
           db  "1","0","1","1"
           db  "1","1","0","0"
           db  "1","1","0","1"
           db  "1","1","1","0"
           db  "1","1","1","1"
.code
           movzx eax,Char
           mov   edx,eax
           and   eax,1111b
           shr   edx,4
           mov    eax,[eax*4+BinTable] ; младшие 4 символа
           mov    edx,[edx*4+BinTable] ; старшие 4 символа


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan