U
    ͔`                     @   s   d dl mZmZmZmZmZmZmZmZ dd Z	dd Z
dd Zdd	 Zd
d Zdd Zdd ZedkrdZe	dde\ZZeee dS )    )char_caprequired_bytesmindexlindexnum_listalphanum_listgrouping_listmode_indicatorc                    s  t tttd}t| ||\} }td| t| t| || || |  dt| d  t	|   }|t
  } |dkrzdnd| 7  t
 d dkr d7  qt
 |k rȈ |t
  d	krd
nd7  q fddtt
 D }dd |D }t| d  t	|  }g d }	}
t|d D ],}|	||
|
|d    |
|d 7 }
qt|d D ],}|	||
|
|d    |
|d 7 }
qT| |	fS )N)numericalphanumericbyteZkanjizline 16: mode:         Z00000r      Z1110110000010001Z11101100c                    s(   g | ] }|d  dkr ||d   qS )r   r    .0icoder   2/tmp/photos/amazing-qr-master/amzqr/mylibs/data.py
<listcomp>!   s      zencode.<locals>.<listcomp>c                 S   s   g | ]}t |d qS )   )intr   r   r   r   r   "   s     r      )numeric_encodingalphanumeric_encodingbyte_encodingkanji_encodinganalyseprintr	   get_ccir   r   lenranger   append)vereclstrZmode_encodingmodeZrqbitsbZ	data_codegdata_codewordsr   nr   r   r   encode   s4    
 

r/   c                 C   s   t dd |D rd}nt dd |D r0d}nd}t| }t|}tdD ]4}t| | | |krL|d | krx|d n| }  qqL| |fS )	Nc                 s   s   | ]}|t kV  qd S N)r   r   r   r   r   	<genexpr>0   s     zanalyse.<locals>.<genexpr>r
   c                 s   s   | ]}|t kV  qd S r0   )r   r   r   r   r   r1   2   s     r   r   (   r   )allr   r$   r%   r   )r'   r(   r)   r*   mlr   r   r   r   r!   /   s    r!   c                    s    fddt dt dD }d}|D ]V}d}t|dkr@d}nt|d	krPd
}tt|d	d  }|d|t|  | 7 }q&|S )Nc                    s   g | ]} ||d   qS )r   r   r   r)   r   r   r   A   s     z$numeric_encoding.<locals>.<listcomp>r   r    
   r   r   r      r   )r%   r$   binr   )r)   Zstr_listr   r   Z	rqbin_lenZ	code_tempr   r6   r   r   @   s    r   c                 C   s   dd | D }d}t dt|dD ]D}t||d  d ||  dd  }ddt|  | }||7 }q"|t|d krt|d	 dd  }dd
t|  | }||7 }|S )Nc                 S   s   g | ]}t |qS r   )r   indexr   r   r   r   r   N   s     z)alphanumeric_encoding.<locals>.<listcomp>r7   r   r   -   r         )r%   r$   r:   )r)   Z	code_listr   r   cr   r   r   r   M   s    $
r   c                 C   sH   d}| D ]:}t t|ddd  }ddt|  | }||7 }q|S )Nr7   z
iso-8859-1r   r   r   )r:   ordr/   r$   )r)   r   r   r@   r   r   r   r   [   s    
r   c                 C   s   d S r0   r   r6   r   r   r   r    c   s    r    c                 C   s   d|   krdkr&n ndt |  }n2d|   kr:dkrLn ndt |  }ndt |  }tt|dd  }d	|t|  | }|S )
Nr   	   )r8   rB   r   r   r8      )   r=   r   r8   )      r   rD   r   r   )r   r:   r$   )r'   r*   r)   Zcci_lenZccir   r   r   r#   g   s    r#   __main__Z	123456789r   HN)amzqr.mylibs.constantr   r   r   r   r   r   r   r	   r/   r!   r   r   r   r    r#   __name__svZdatacoder"   r   r   r   r   <module>   s   ()