Konwertowanie plików... pomocy ;(

0

Chce przekonwertowac dowolny plik binarny np. *.exe, *.jpg do pliku ASCII (w dowolnym algorytmie) i odwrotnie czyli a ASCII do binarnego... :-)

0

:| :| :|
Co rozumiesz poprzez plik ASCII?
Jeśli to ma być plik zawierający znaki z rozszerzonej tablicy ASCII, to każdy plik taki będzie. Sprecyzuj swoje pytanie.

0

Ckodzi o to, że plik ma byc zakodowany w znakach np. a-z A-Z 0-9, a pozniej przechowywany w jakims pliku.txt, ewentualnie przesylanie przez jakis komunikator...

0

chodzi ci moze o algorytm kodowania załącznika w wiadomościach e-mail???

0

To (tak jak napisał CyberKid) polecam mime64.
Na http://google.pl znajdziesz algorytm i opis.
Tu możesz obadać moją wersję w JavaScript (źródło strony) - może trochę nieczytelna, bo połączona z kodowaniem TEA :-P:
http://marooned.prv.pl/ -> Strona prywatna

0

Kiedyś nawet przeanalizowałem i doszedłem do tego które znaki zamieniane są na które ale programu pisać mi się już nie chciało :P

0

Kiedyś nawet przeanalizowałem i doszedłem do tego które znaki zamieniane są na które ale programu pisać mi się już nie chciało :P

CyberKid - tu się nie zamienia jednych znaków na drugie.
Wygląda to tak:
masz tablicę, w której siedzą 64 znaki: A-Z,a-z,0-9,+/

Bierzesz 3 bajty z oryginalnej tablicy i rozbijasz binarnie, np.
10010110 11001001 00010110

teraz dzielisz to na 4 grupy po 6 bitów, czyli:
100101 101100 100100 010110

i każdą taką grupkę uznajesz jako liczbę z zakresu 0-63 będącą indeksem tablicy 64-ro znakowej. Jak potrzeba na końcu uzupełnić brakujące bity, to wstawia się zazwyczaj znak "=", który przy dekodowaniu jest pomijany.

0

Wiem o tym :-)
Chodziło mi o to że doszedłem do tego jak to jest zamieniane. Bo poebierane jst każde 6 bitów.

0

Tak mi przyszło do głowy, o ile ktoś nie ma takiej funkcji
i nie będzie oszukiwał, to może by zrobić mały konkursik
na najlepsze i najszybsze stworzenie funkcji:

- Base64Encode(Str: String): String;
- Base64Decode(Str: String): String;

a najlepszą nadesłaną pracę wstawić do FAQ ?

0
  • Base64Encode(Str: string): string;
  • Base64Decode(Str: string): string;

nie moze byc string bo jezeli w pliku zdarzy sie np znak 0x00 to dalej nasz programik kodu nie odczyta. Wolałbym

array of byte

.

0
  • Base64Encode(Str: string): string;
  • Base64Decode(Str: string): string;

nie moze byc string bo jezeli w pliku zdarzy sie np znak 0x00 to dalej nasz programik kodu nie odczyta. Wolałbym

array of byte

.

To sie raczej tyczy PChar, czy jakiegos innego typu, ale na pewno nie string. Sam budowalem stringi zawierajace dane binarne i dzialalo :)

0

nie moze byc string bo jezeli w pliku zdarzy sie np znak 0x00 to dalej nasz programik kodu nie odczyta

e tam :-P co najwyżej Memo czy jakiś Edit tego nie wyświetli tylko się urwie...

a co do array of byte to może być, tak palnąłem że string, żeby dużo chętnych było do konkursu :-D

0

Ekhm. Chciałbym zaznaczyć, że rozmowa schodzi na totalnie inny temat niż wyszczególniony w pierwszym poście - you have been warned :-).

0

ale jajo. działa

kiedyś jak na forum napisałem, że string ma w 0 bajcie swoją długość to mnie wsyzscy sprostowali, że to nie prawda i że string kończy się znakiem 0x00 a tera widzę, że nawet jak się owy znak walnie to długość stringa nie jest skracana.

0

w Delphi string ma na koncu dodawane zero, ale nie jest ono traktowane jako znacznik konca, ma to tylko usprawniac rzutowanie na PChar. O ile wiem, zero jest znacznikiem konca lancucha w C(++), ktory nie przechowuje dlugosci lancucha a jedynie orientuje sie po znaczniku. Rozwiazanie w Delphi jest chyba wydajniejsze. Np. podczas przegladania lancucha w poszukiwaniu znaku, w C kazdy znak musi byc porownany z szukanym znakiem ORAZ z zerem. W Delphi mozna z gory ustawic wielkosc petli na podstawie znanej dlugosci lancucha i porownywac tylko z szukanym. A poza tym w stringu Delphi mozna trzymac wszystko - jak to juz tu zauwazono.

1 użytkowników online, w tym zalogowanych: 0, gości: 1