![]() |
![]() ![]() |
![]() |
-Mesajah- |
![]()
Post
#1
|
Goście ![]() |
Zastanawiam się, jakiej translacji id używają serwisy (np. youtube) w linkach typu:
http://www.youtube.com/watch?v=kNjyHwySxdI Jeśli trzeba by zakodować w ten sposób 10 milionów kolejnych liczb (1-10.000.000) to dałoby się to zrobić w 4 znakach czy trzeba użyć 5 ? Pomijając czy 4 czy 5 to w jaki sposób najprościej zakodować taką liczbę (np. 3123576) na krótszy symbol znakowy, żeby szybko ją zdekodować. Są do tego jakieś funkcje, czy trzeba kombinować z zapisywaniem np. każdych 3 cyfr za pomocą 2 znaków, robić jakieś tablice i się w ten sposób bawić ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W URL-u podwaj to liczbę w systemie 36-owym (a-z0-9), a w bazie danych trzymaj "klasyczne" ID - base_convert
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Zależy od tego czego użyjesz jako podstawę. Jeśli alfanumeryczną to bierz 36. Jeśli dodatkowo jest case-sensitive to podstawa rośnie do 62 (2*26 znaków + 10 cyfr). W efekcie masz:
dla 36: 1 znak - 36 2 znaki - 1.296 3 znaki - 46.656 4 znaki - 1.679.616 5 znaków - 60.466.176 dla 62: 1 znak - 62 2 znaki - 3.844 3 znaki - 238.328 4 znaki - 14.776.336 5 znaków - 916.132.832 I teraz chyba wiesz czemu niektórzy mówią o 4, a inni o 5 znakach. Chodzi o to czy w zakodowanej liczbie zwraca się uwagę na wielkość znaków. Jak już wspomniał Crozin, to ja bym tutaj nie uważał na wielkość, bo przeglądarki mogą Ci po drodze to wypaczyć i przez to kompletnie zmienić cel linka. Użyj tak jak radził wyżej Crozin "Base36". Jest pewniejsza, czy też raczej odporniejsza na takie przekłamania, choć zajmuje nieco więcej miejsca, ale to już drobiazg w sumie ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
-Mesajah- |
![]()
Post
#4
|
Goście ![]() |
Dzięki za info.
Skoro więc na 4 znakach da się zakodować 14.776.336 cyfr to już całkiem nieźle (zapomniałem o możliwości rozróżniania wielkości liter ![]() |
|
|
-Mesajah- |
![]()
Post
#5
|
Goście ![]() |
Jak już wspomniał Crozin, to ja bym tutaj nie uważał na wielkość, bo przeglądarki mogą Ci po drodze to wypaczyć i przez to kompletnie zmienić cel linka. Użyj tak jak radził wyżej Crozin "Base36". Jest pewniejsza, czy też raczej odporniejsza na takie przekłamania, choć zajmuje nieco więcej miejsca, ale to już drobiazg w sumie ![]() Aha, rozumiem. Też czułem, że z tym case sensitive może być problem, więc spróbuje to pominąć (chociaż youtube tak ma). |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
W sumie, to jeszcze możesz skorzystać z liczby ujemnej...
![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 01:24 |