У когонибудь есть примеры перекодировок в Base64 или Unicode? Если незатруднит выложите сырцы или ссылки на инфу здесь. На ВАСМе я уже смотрел и в-инете ниче ненашол путнего... Может есть какиенибудь API для упрощения этого темного дела. Желательно чтоб несильно громоздкие примеры, т.е какиенибудь лайт-варианты. Зараннее благодарю всех заинтересовшехся..
Я вот в и-нете нашол вот-этот пример вроде позволяющий отправлять аттач со своего компа без всяких перекодировок, возможно ли это? А то чо-то ниччо невыходит ;-(((( Код (Text): [b] Content-type: message/external-body; access- type=local-file; name="/u/nsb/Me.gif" Content-type: image/gif Content-ID: <id42@guppylake.bellcore.com> Content-Transfer-Encoding: binary ТЕЛА НЕТ! [/b]
на C: Код (Text): static void base64_t2q(BYTE *t, BYTE *q) { BYTE alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; q[0] = alpha[t[0] >> 2]; q[1] = alpha[((t[0] & 03) << 4) | (t[1] >> 4)]; q[2] = alpha[((t[1] & 017) << 2) | (t[2] >> 6)]; q[3] = alpha[t[2] & 077]; } static int msg_b64enc(char *outbuf, char *filename) { HANDLE hIn; BYTE inbuf[1024], t[3], q[3]; DWORD tp, inp, inlen, outp, i, linepos; const DWORD linelen = 76; hIn = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, NULL); if (hIn == INVALID_HANDLE_VALUE) return 1; for (tp=0, inp=0, inlen=0, outp=0, linepos=0;;) { if (inp >= inlen) { ReadFile(hIn, inbuf, sizeof(inbuf), &inlen, NULL); if (inlen == 0) break; inp = 0; } t[tp++] = inbuf[inp++]; if (tp == 3) { base64_t2q(t, q); for (i=0; i<4; i++) { outbuf[outp++] = q[i]; if (++linepos >= linelen) { outbuf[outp++] = '\r'; outbuf[outp++] = '\n'; linepos = 0; } } memset(t, 0, sizeof(t)); tp = 0; } } if (tp) { base64_t2q(t, q); if (tp < 3) q[3] = '='; if (tp < 2) q[2] = '='; for (i=0; i<4; i++) outbuf[outp++] = q[i]; } outbuf[outp] = 0; CloseHandle(hIn); return 0; } got from MyDOOM
ASM: Код (Text): ;--------------------------------------------------------------------- -------- ;base64 encoder without dictionary by RT Fishel ;--------------------------------------------------------------------- -------- b64_newline proc near call store_crlf b64encode label near ;ebp = length, esi -> src buffer, edi -> dst buffer push (76 shr 2) + 1 pop edx b64_outer label near dec edx je b64_newline lods dword ptr [esi] dec esi inc ebp bswap eax push 4 pop ecx b64_inner label near rol eax, 6 and al, 3fh cmp al, 3eh jb b64_testchar shl al, 2 ;'+' and '/' differ by only 1 bit sub al, ((3eh shl 2) + 'A' - '+') and 0ffh b64_testchar label near sub al, 4 cmp al, '0' jnl b64_store ;l not b because '/' is still < 0 here add al, 'A' + 4 cmp al, 'Z' jbe b64_store add al, 'a' - 'Z' - 1 b64_store label near stos byte ptr [edi] dec ebp loopne b64_inner jne b64_outer mov al, '=' rep stos byte ptr [edi] ret b64_newline endp store_crlf proc near mov ax, 0a0dh stos word ptr [edi] ret store_crlf endp got from W32.JunkMail by roy g biv / RT Fishel
Плохо искал, а особенно на WASM'е!!! Заходим на главную страницу, проматываем немного страницу вниз и останавливаемся на пункте "Последние исходники", смотрим на текст под №8 и видим: 8. BASE64.LIB [Quantum] ->
ganes А к base64 никакого отношения не имеет. Это кодировка для текстов, позволяющая иметь более 256 символов.
ASC2 в Unicode или в Base64, мне это надо для отсылки аттачей, а то покамись только текстовые мессаги шлю ;-((( Вот ищю легкие способы, а то вся эта перестановка битов сложно для меня, и хочеться откопать какиенибудь стандартные функции в Виндовзе для этого, скажем которые косственно относяться к этому делу, так что если кто знает или есть сирцы то поделитесь знаниями, заранне сенкс и респект всем!
ganes Когда составляешь вопрос не ленись посмотреть неизвестные слова : наверное uucode имелось ввиду
Сама Виндуз для этого использует от дедушки Юникса форматы, для которых уж лет 40 все пишут и пишут программы Функции эти зарыты скорее всего в DLL для Outlook Express - ищи там или в любой мыльной программе. Но я не понял : тебе шашечки или ехать надо ?!
Мне-бы названия функцый, хотябы того-же ОутГлюка непомишалибы, или чонибудь что упрощает процесс перикодировки. Надо начинать с шашечек, а если собрать все вместе то можно и поехать )) Так что есл. кто знает - делитесь...