shiny
Wiek: 35 Na forum: 6131 dni Posty: 14
Piwa : 17
Wst?p:
Za pomoc? base64 mo?na przechowywa? dowolne dane. Jest przeno?ny i s?u?y r?wnie? do kodowania ci?gu bajt?w za pomoc? znak?w. Konwersja jest mo?liwa przy dowolnej d?ugo?ci ci?g znak?w, przebiega wed?ug standard?w - przyk?adowo zakodowany w PAWN tekst mo?na zdekodowa? na tej stronie, tak samo mo?na na niej zakodowa? ci?g znak?w i odkodowa? na serwerze.
Funkcje:
Kod: decode(const string[], second_string[])
string[] : Dekoduje ci?g znak?w.
second_string[] : Przechowuje zdekodowany ci?g znak?w z parametru string[]
Kod: encode(const string[], second_string[])
string[] : Koduje ci?g znak?w.
second_string[] : Przechowuje zakodowany ci?g znak?w z parametru string[]
Mo?liwe jest r?wnie? u?ywania wst?pnie zdefiniowanych makr:
Kod: e:base64 - koduje ci?g
d:base64 - dekoduje ci?g
U?ycie:
Kod: new str[95] = "a?bc?de?fghijkl?mn?o?pqrs?tuvwxyz??A?BC?DE?FGHIJKL?MN?O?PQRS?TUVWXYZ??", res[95];
e:base64(str, res);
print(res);
d:base64(res, str);
print(str);
Wy?wietlone w konsoli:
Kod: YbliY+ZkZepmZ2hpamtss21u8W/zcHFyc5x0dXZ3eHl6n79BpUJDxkRFykZHSElKS0yjTU7RT9NQUVJTjFRVVldYWVqPrw==
a?bc?de?fghijkl?mn?o?pqrs?tuvwxyz??A?BC?DE?FGHIJKL?MN?O?PQRS?TUVWXYZ??
Jak wida? - kodowane jak i dekodowane s? r?wnie? polskie znaki.
Uwagi:
To nie jest HASH! Ka?dy ci?g znak?w jest mo?liwy do zdekodowania!
Dodatkowe informacje:
Klik!
Licencja:
Kod: Copyright (c) 2013, Shiny
Wszystkie prawa zastrze?one.
Redystrybucja i u?ywanie, czy to w formie kodu ?r?d?owego, czy w formie kodu wykonawczego, s? dozwolone pod warunkiem spe?nienia poni?szych warunk?w:
Redystrybucja kodu ?r?d?owego musi zawiera? powy?sz? not? dotycz?c? praw autorskich, niniejsz? list? warunk?w oraz poni?sze o?wiadczenie o wy??czeniu odpowiedzialno?ci.
Redystrybucja kodu wykonawczego musi zawiera? powy?sz? not? dotycz?c? praw autorskich, niniejsz? list? warunk?w oraz poni?sze o?wiadczenie o wy??czeniu odpowiedzialno?ci w dokumentacji i/lub w w innych materia?ach dostarczanych wraz z kopi? oprogramowania.
Ani nazwa [Include] Base64, ani nazwa Base 64 - Include nie mog? by? u?yte celem sygnowania lub promowania produkt?w pochodz?cych od tego oprogramowania, bez szczeg?lnego, wyra?onego na pi?mie ich zezwolenia.
To oprogramowanie jest dostarczone przez u?ytkownika Shiny “tak, jak jest”. Ka?da, dorozumiana lub bezpo?rednio wyra?ona gwarancja, nie wy??czaj?c dorozumianej gwarancji przydatno?ci handlowej i przydatno?ci do okre?lonego zastosowania, jest wy??czona.
W ?adnym wypadku posiadacze praw autorskich nie mog? by? odpowiedzialni za jakiekolwiek bezpo?rednie, po?rednie, incydentalne, specjalne, uboczne i wt?rne szkody (nie wy??czaj?c obowi?zku dostarczenia produktu zast?pczego lub serwisu, odpowiedzialno?ci z tytu?u utraty walor?w u?ytkowych, utraty danych lub korzy?ci a tak?e przerw w pracy przedsi?biorstwa)
spowodowane w jakikolwiek spos?b i na podstawie istniej?cej w torii odpowiedzialno?ci kontraktowej, ca?kowitej lub deliktowej (wynik?ej zar?wno z niedbalstwa jak innych postaci winy), powsta?e w jakikolwiek spos?b w wyniku u?ywania lub maj?ce zwi?zek z u?ywaniem oprogramowania, nawet je?li o mo?liwo?ci powstania takich szk?d ostrze?ono.
Pobieranie:
Pastebin.com
SolidFiles.com
Lub:
Kod: // License:
/*
Licencja:
Copyright (c) 2013, Shiny
Wszystkie prawa zastrze?one.
Redystrybucja i u?ywanie, czy to w formie kodu ?r?d?owego, czy w formie kodu wykonawczego, s? dozwolone pod warunkiem spe?nienia poni?szych warunk?w:
Redystrybucja kodu ?r?d?owego musi zawiera? powy?sz? not? dotycz?c? praw autorskich, niniejsz? list? warunk?w oraz poni?sze o?wiadczenie o wy??czeniu odpowiedzialno?ci.
Redystrybucja kodu wykonawczego musi zawiera? powy?sz? not? dotycz?c? praw autorskich, niniejsz? list? warunk?w oraz poni?sze o?wiadczenie o wy??czeniu odpowiedzialno?ci w dokumentacji i/lub w w innych materia?ach dostarczanych wraz z kopi? oprogramowania.
Ani nazwa '[Include] Base64', ani nazwa Base 64 - Include nie mog? by? u?yte celem sygnowania lub promowania produkt?w pochodz?cych od tego oprogramowania, bez szczeg?lnego, wyra?onego na pi?mie ich zezwolenia.
To oprogramowanie jest dostarczone przez u?ytkownika Shiny “tak, jak jest”. Ka?da, dorozumiana lub bezpo?rednio wyra?ona gwarancja, nie wy??czaj?c dorozumianej gwarancji przydatno?ci handlowej i przydatno?ci do okre?lonego zastosowania, jest wy??czona.
W ?adnym wypadku posiadacze praw autorskich nie mog? by? odpowiedzialni za jakiekolwiek bezpo?rednie, po?rednie, incydentalne, specjalne, uboczne i wt?rne szkody (nie wy??czaj?c obowi?zku dostarczenia produktu zast?pczego lub serwisu, odpowiedzialno?ci z tytu?u utraty walor?w u?ytkowych, utraty danych lub korzy?ci a tak?e przerw w pracy przedsi?biorstwa)
spowodowane w jakikolwiek spos?b i na podstawie istniej?cej w torii odpowiedzialno?ci kontraktowej, ca?kowitej lub deliktowej (wynik?ej zar?wno z niedbalstwa jak innych postaci winy), powsta?e w jakikolwiek spos?b w wyniku u?ywania lub maj?ce zwi?zek z u?ywaniem oprogramowania, nawet je?li o mo?liwo?ci powstania takich szk?d ostrze?ono.
*/
// Conditions:
#if defined _base64_included
#endinput
#endif
#define _base64_included
// Macros:
#define e:base64(%0,%1) encode(%0,%1)
#define d:base64(%0,%1) decode(%0,%1)
// Variables:
new const LettersTable[] = {
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
};
new const Decoder[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 62, 0, 0, 0, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
0, 0, 0, 0, 0, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 0, 0, 0, 0, 0, 0, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
};
// Functions:
/** Funkcja:
* decode
- string[] Dekoduje ci?g znak?w.
- second_string[] Przechowuje zdekodowany ci?g znak?w z parametru string[]
**/
stock decode(const string[], second_string[]) {
/** Zmienne:
* SpaceReplacer - zamienia spacje na znaki r?wno?ci;
* len - oznacza d?ugo?? zakodowanego ci?gu znak?w string[];
* Position - oznacza pozycj? w ci?gu znak?w;
**/
new const SpaceReplacer = '=';
new len = strlen(string);
new Position;
/** Zmienne:
* i - tworzy zwyk?? warto?? typu int o warto?ci zero;
* char_[2] - oznacza przypisany znak w ci?gu do zdekodowania;
**/
for(new i = 0 ; i < len ; i++) {
new char_[2];
char_[0] = Decoder[string[i++]];
char_[1] = Decoder[string[i]];
char_[0] = (char_[0] << 2) | ((char_[1] >> 4) & 3);
Position += format(second_string[Position], len, "%c", char_[0]);
if(++i < len) {
char_[0] = string[i];
if(char_[0] == SpaceReplacer)
break;
char_[0] = Decoder[string[i]];
char_[1] = ((char_[1] << 4) & 240) | ((char_[0] >> 2) & 15);
Position += format(second_string[Position], len, "%c", char_[1]);
}
if(++i < len) {
char_[1] = string[i];
if(char_[1] == SpaceReplacer)
break;
char_[1] = Decoder[string[i]];
char_[0] = ((char_[0] << 6) & 192) | char_[1];
Position += format(second_string[Position], len, "%c", char_[0]);
}
}
return true;
}
/** Funkcja:
* encode
- string[] Koduje ci?g znak?w.
- second_string[] Przechowuje zakodowany ci?g znak?w z parametru string[]
**/
stock encode(const string[], second_string[]) {
/** Zmienne:
* SpaceReplacer - zamienia spacje na znaki r?wno?ci;
* len - oznacza d?ugo?? zakodowanego ci?gu znak?w string[];
* Position - oznacza pozycj? w ci?gu znak?w;
**/
new const SpaceReplacer = '=';
new len = strlen(string);
new Position;
/** Zmienne:
* i - tworzy zwyk?? warto?? typu int o warto?ci zero;
* Character - oznacza przypisany znak w ci?gu do zakodowania;
**/
for(new i = 0 ; i < len ; i++) {
new Character;
Character = (string[i] >> 2) & 63;
Position += format(second_string[Position], len, "%c", LettersTable[Character]);
Character = (string[i] << 4) & 63;
if(++i < len)
Character |= (string[i] >> 4) & 15;
Position += format(second_string[Position], len, "%c", LettersTable[Character]);
if(i < len) {
Character = (string[i] << 2) & 63;
if(++i < len)
Character |= (string[i] >> 6) & 3;
Position += format(second_string[Position], len, "%c", LettersTable[Character]);
} else {
i++;
Position += format(second_string[Position], len, "%c", SpaceReplacer);
}
if(i < len) {
Character = string[i] & 63;
Position += format(second_string[Position], len, "%c", LettersTable[Character]);
}
else Position += format(second_string[Position], len, "%c", SpaceReplacer);
}
return true;
}
Ostatnio zmieniony przez Iggy 2015-04-19, 18:04, w całości zmieniany 1 raz