Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrótowy zapis bardzo dużej liczby
Forum PHP.pl > Forum > PHP
Michael2318
Czy PHP daje jakąś możliwość skrócenia np. takiej liczby:

12100121023124100023123121000212

ale w taki sposób, aby ją można było potem ponownie przywrócić do takiej samej postaci? Chodzi mi o jakiś skrócony zapis, jakieś kodowanie - cokolwiek. No bo nie chcę takiego czegoś ładować do bazy, a varchar/text/tinytext odpada. Chodzi mi o coś w deseń base64, tylko z odpowiednikiem do samych liczb.

Dzięki.
Crozin
1. Dlaczego nie chcesz zapisać tego do bazy w takiej postaci?
2. Pierwszym pomysłem nasuwającym się na myśl, będzie zapisanie liczby w innym systemie liczbowym, np. w 36-nym zamiast w dziesiętnym. base_convert.
Michael2318
Dziękuję, o taką odpowiedź mi chodziło, tylko mam problem z tą funkcją. Mianowicie, w jedną stronę (10 > 36) zamienia, ale jak skopiuję ten zamieniony string i próbuję zamienić to z powrotem na system dziesiątkowy (36 > 10) to niestety już nie jest ten sam ciąg. Możesz mnie nakierować, co robię źle?

10 > 36
  1. base_convert('12100121023124100023123121000212', 10, 36);


efekt: wl4jfpi6j74ogkg8c4c8

36 > 10

  1. base_convert('wl4jfpi6j74ogkg8c4c8', 36, 10);


efekt: 12100121023124096006044840408848
redeemer
Odpowiedź znajdziesz w manualu, dlaczego tak się dzieje (duża czerwona ramka). Spróbowałbym może użyc funkcji pack
markonix
Cytat(Michael2318 @ 24.02.2013, 17:33:52 ) *
nie chcę takiego czegoś ładować do bazy, a varchar/text/tinytext odpada.

Taka mała uwaga - zmieniając na inne formaty (większe niż 10tkowe) i tak użyjesz znaków więc varchar będzie nieunikniony.
Michael2318
Źle się wyraziłem - nie chcę bezpośrednio pakować tego ciągu do bazy w varchar, tylko chcę go w jakiś sposób zakodować, aby był krótszy.

Zauważyłem, że jesli użyję zapisu 4 > 36 to wszystko działa, tyle tylko że jeśli w ciągu nie ma liczby większej niż 3 włącznie. W moim ciągu będą liczby z przedziału 0-4 ZAWSZE, ale ta funkcja jakoś nie potrafi się dogadać z tą czwórką i od momentu wystąpienia tej 4 w ciągu, cały ciąg jest źle wyświetlany. Ktoś wie dlaczego? :/ Ten sam powód - ramka ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.