n1ed-8.x-2.31/src/Flmngr/lib/file/blurHash/Base83.php

src/Flmngr/lib/file/blurHash/Base83.php
<?php

namespace Drupal\n1ed\Flmngr\lib\file\blurHash;

use InvalidArgumentException;

class Base83 {

  const ALPHABET = [
    '0',
    '1',
    '2',
    '3',
    '4',
    '5',
    '6',
    '7',
    '8',
    '9',
    'A',
    'B',
    'C',
    'D',
    'E',
    'F',
    'G',
    'H',
    'I',
    'J',
    'K',
    'L',
    'M',
    'N',
    'O',
    'P',
    'Q',
    'R',
    'S',
    'T',
    'U',
    'V',
    'W',
    'X',
    'Y',
    'Z',
    'a',
    'b',
    'c',
    'd',
    'e',
    'f',
    'g',
    'h',
    'i',
    'j',
    'k',
    'l',
    'm',
    'n',
    'o',
    'p',
    'q',
    'r',
    's',
    't',
    'u',
    'v',
    'w',
    'x',
    'y',
    'z',
    '#',
    '$',
    '%',
    '*',
    '+',
    ',',
    '-',
    '.',
    ':',
    ';',
    '=',
    '?',
    '@',
    '[',
    ']',
    '^',
    '_',
    '{',
    '|',
    '}',
    '~',
  ];

  const BASE = 83;

  public static function encode($value, $length) {
    if (floor($value / (self::BASE ** $length)) != 0) {
      throw new InvalidArgumentException('Specified length is too short to encode given value.');
    }

    $result = '';
    for ($i = 1; $i <= $length; $i++) {
      $digit = floor($value / (self::BASE ** ($length - $i))) % self::BASE;
      $result .= self::ALPHABET[$digit];
    }
    return $result;
  }

  public static function decode($hash) {
    $result = 0;
    foreach (str_split($hash) as $char) {
      $result = $result * self::BASE + (int) array_search($char, self::ALPHABET, TRUE);
    }
    return $result;
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc