11/10/2015 - PHP
Varsayalım ki elinizde bulunan integer değerleri, sade şekliyle insanların görmesini istemiyorsunuz. Yapacağınız şey, değeri eşsiz bir koda dönüştürmek olacaktır. Aynı işlemi geri alma seçeneğiniz de olmalı. Bu işlem için base_convert() fonksiyonu kullanılabilir.
Sağlanan $suffix
değeri herhangi bir şey olabilir.
class BaseConverter
{
private $suffix;
public function __construct($suffix)
{
$this->suffix = $suffix;
}
public function convert($value)
{
if (is_int($this->suffix)) {
$value = strtoupper(base_convert($value.$this->suffix, 10, 36));
} else {
$value = strtoupper(base_convert($value, 10, 36));
}
return $value;
}
public function inverse($value)
{
if (is_int($this->suffix)) {
$value = substr(base_convert($value, 36, 10), 0, -(strlen($this->suffix)));
} else {
$value = base_convert($value, 36, 10);
}
return $value;
}
}
$value = 123456;
$bc = new BaseConverter(1907);
$encoded = $bc->convert($value);
$decoded = $bc->inverse($encoded);
echo "ORIGINAL: $value | ENCODED: $encoded | DECODED: $decoded";
ORIGINAL: 123456 | ENCODED: KF0Y2B | DECODED: 123456
Büyük değerlerde hassasiyetini kaybettiği için kullanırken dikkat edin. Mesela bunu 1234567890987654321
deneyin.