Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2013-09-02, 13:53


shiny







Wiek: 35
Na forum: 6131 dni
Posty: 14

Piwa: 17

Respekt: 63

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  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-09-02, 23:45


IgrexolonO







Wiek: 34
Na forum: 6809 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

Propsuje, jednak jest to wedle mnie niepotrzebna zabawka. Ci?g znak?w po konwersji jak to w base64 jest troszk? zbyt d?ugi, a w SA-MPie takich rzeczy nie wypada.. :)

Postaw piwo autorowi tego posta
 

 
Tagi: base64 :: kodowanie :: odkodowanie :: ciągu :: znak
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » Skrypty do SA-MP » [INCLUDE] Base64 - kodowanie i od Odpowiedz do tematu

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku