- Модуль: ui
- Путь к файлу: ~/bitrix/modules/ui/lib/barcode/barcodegenerator.php
- Класс: BitrixUIBarcodeBarcodeGenerator
- Вызов: BarcodeGenerator::qr_encode_kanji
private function qr_encode_kanji($data, $version_group) {
$code = array(1, 0, 0, 0);
$length = strlen($data);
switch ($version_group) {
case 2: /* 27 - 40 */
$code[] = $length & 0x1000;
$code[] = $length & 0x0800;
case 1: /* 10 - 26 */
$code[] = $length & 0x0400;
$code[] = $length & 0x0200;
case 0: /* 1 - 9 */
$code[] = $length & 0x0100;
$code[] = $length & 0x0080;
$code[] = $length & 0x0040;
$code[] = $length & 0x0020;
$code[] = $length & 0x0010;
$code[] = $length & 0x0008;
$code[] = $length & 0x0004;
$code[] = $length & 0x0002;
}
for ($i = 0; $i < $length; $i += 2) {
$group = substr($data, $i, 2);
$c1 = ord(substr($group, 0, 1));
$c2 = ord(substr($group, 1, 1));
if ($c1 >= 0x81 && $c1 <= 0x9F && $c2 >= 0x40 && $c2 <= 0xFC) {
$ch = ($c1 - 0x81) * 0xC0 + ($c2 - 0x40);
} else if (
($c1 >= 0xE0 && $c1 <= 0xEA && $c2 >= 0x40 && $c2 <= 0xFC) ||
($c1 == 0xEB && $c2 >= 0x40 && $c2 <= 0xBF)
) {
$ch = ($c1 - 0xC1) * 0xC0 + ($c2 - 0x40);
} else {
$ch = 0;
}
$code[] = $ch & 0x1000;
$code[] = $ch & 0x0800;
$code[] = $ch & 0x0400;
$code[] = $ch & 0x0200;
$code[] = $ch & 0x0100;
$code[] = $ch & 0x0080;
$code[] = $ch & 0x0040;
$code[] = $ch & 0x0020;
$code[] = $ch & 0x0010;
$code[] = $ch & 0x0008;
$code[] = $ch & 0x0004;
$code[] = $ch & 0x0002;
$code[] = $ch & 0x0001;
}
return $code;
}