• Модуль: 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;
}