| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \section{\module{binascii} --- | 
					
						
							| 
									
										
										
										
											2001-11-28 07:26:15 +00:00
										 |  |  |          Convert between binary and \ASCII} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-22 21:23:22 +00:00
										 |  |  | \declaremodule{builtin}{binascii} | 
					
						
							| 
									
										
										
										
											1998-08-07 16:00:30 +00:00
										 |  |  | \modulesynopsis{Tools for converting between binary and various | 
					
						
							| 
									
										
										
										
											2001-05-09 15:50:17 +00:00
										 |  |  |                 \ASCII-encoded binary representations.} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | The \module{binascii} module contains a number of methods to convert | 
					
						
							| 
									
										
										
										
											2001-11-28 07:26:15 +00:00
										 |  |  | between binary and various \ASCII-encoded binary | 
					
						
							| 
									
										
										
										
											1999-04-22 21:23:22 +00:00
										 |  |  | representations. Normally, you will not use these functions directly | 
					
						
							|  |  |  | but use wrapper modules like \refmodule{uu}\refstmodindex{uu} or | 
					
						
							| 
									
										
										
										
											1999-04-23 15:42:36 +00:00
										 |  |  | \refmodule{binhex}\refstmodindex{binhex} instead, this module solely | 
					
						
							| 
									
										
										
										
											2000-07-16 19:01:10 +00:00
										 |  |  | exists because bit-manipulation of large amounts of data is slow in | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | Python. | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | The \module{binascii} module defines the following functions: | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{a2b_uu}{string} | 
					
						
							|  |  |  | Convert a single line of uuencoded data back to binary and return the | 
					
						
							|  |  |  | binary data. Lines normally contain 45 (binary) bytes, except for the | 
					
						
							|  |  |  | last line. Line data may be followed by whitespace. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{b2a_uu}{data} | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | Convert binary data to a line of \ASCII{} characters, the return value | 
					
						
							|  |  |  | is the converted line, including a newline char. The length of | 
					
						
							|  |  |  | \var{data} should be at most 45. | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-10-10 14:41:03 +00:00
										 |  |  | \begin{funcdesc}{a2b_base64}{string} | 
					
						
							|  |  |  | Convert a block of base64 data back to binary and return the | 
					
						
							|  |  |  | binary data. More than one line may be passed at a time. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{b2a_base64}{data} | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | Convert binary data to a line of \ASCII{} characters in base64 coding. | 
					
						
							| 
									
										
										
										
											1995-10-10 14:41:03 +00:00
										 |  |  | The return value is the converted line, including a newline char. | 
					
						
							|  |  |  | The length of \var{data} should be at most 57 to adhere to the base64 | 
					
						
							|  |  |  | standard. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-30 20:32:11 +00:00
										 |  |  | \begin{funcdesc}{a2b_qp}{string\optional{, header}} | 
					
						
							|  |  |  | Convert a block of quoted-printable data back to binary and return the | 
					
						
							|  |  |  | binary data. More than one line may be passed at a time. | 
					
						
							|  |  |  | If the optional argument \var{header} is present and true, underscores | 
					
						
							|  |  |  | will be decoded as spaces. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{b2a_qp}{data\optional{, quotetabs, istext, header}} | 
					
						
							|  |  |  | Convert binary data to a line(s) of \ASCII{} characters in | 
					
						
							|  |  |  | quoted-printable encoding.  The return value is the converted line(s). | 
					
						
							|  |  |  | If the optional argument \var{quotetabs} is present and true, all tabs | 
					
						
							|  |  |  | and spaces will be encoded.  If the optional argument \var{header} is | 
					
						
							|  |  |  | present and true, spaces will be encoded as underscores per RFC1522. | 
					
						
							|  |  |  | If the optional argument \var{header} is present and false, newline | 
					
						
							|  |  |  | characters will be encoded as well, otherwise linefeed conversion might | 
					
						
							|  |  |  | corrupt the binary data stream. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | \begin{funcdesc}{a2b_hqx}{string} | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | Convert binhex4 formatted \ASCII{} data to binary, without doing | 
					
						
							|  |  |  | RLE-decompression. The string should contain a complete number of | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | binary bytes, or (in case of the last portion of the binhex4 data) | 
					
						
							|  |  |  | have the remaining bits zero. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{rledecode_hqx}{data} | 
					
						
							|  |  |  | Perform RLE-decompression on the data, as per the binhex4 | 
					
						
							|  |  |  | standard. The algorithm uses \code{0x90} after a byte as a repeat | 
					
						
							|  |  |  | indicator, followed by a count. A count of \code{0} specifies a byte | 
					
						
							|  |  |  | value of \code{0x90}. The routine returns the decompressed data, | 
					
						
							|  |  |  | unless data input data ends in an orphaned repeat indicator, in which | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | case the \exception{Incomplete} exception is raised. | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{rlecode_hqx}{data} | 
					
						
							|  |  |  | Perform binhex4 style RLE-compression on \var{data} and return the | 
					
						
							|  |  |  | result. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{b2a_hqx}{data} | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | Perform hexbin4 binary-to-\ASCII{} translation and return the | 
					
						
							|  |  |  | resulting string. The argument should already be RLE-coded, and have a | 
					
						
							|  |  |  | length divisible by 3 (except possibly the last fragment). | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{crc_hqx}{data, crc} | 
					
						
							|  |  |  | Compute the binhex4 crc value of \var{data}, starting with an initial | 
					
						
							|  |  |  | \var{crc} and returning the result. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2000-02-16 21:13:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{crc32}{data\optional{, crc}} | 
					
						
							|  |  |  | Compute CRC-32, the 32-bit checksum of data, starting with an initial | 
					
						
							| 
									
										
										
										
											2001-10-15 13:45:49 +00:00
										 |  |  | crc.  This is consistent with the ZIP file checksum.  Since the | 
					
						
							|  |  |  | algorithm is designed for use as a checksum algorithm, it is not | 
					
						
							|  |  |  | suitable for use as a general hash algorithm.  Use as follows: | 
					
						
							| 
									
										
										
										
											2000-02-16 21:13:37 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							|  |  |  |     print binascii.crc32("hello world") | 
					
						
							|  |  |  |     # Or, in two pieces: | 
					
						
							|  |  |  |     crc = binascii.crc32("hello") | 
					
						
							|  |  |  |     crc = binascii.crc32(" world", crc) | 
					
						
							|  |  |  |     print crc | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2000-08-15 06:08:00 +00:00
										 |  |  | \begin{funcdesc}{b2a_hex}{data} | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  | \funcline{hexlify}{data} | 
					
						
							| 
									
										
										
										
											2000-08-15 06:08:00 +00:00
										 |  |  | Return the hexadecimal representation of the binary \var{data}.  Every | 
					
						
							|  |  |  | byte of \var{data} is converted into the corresponding 2-digit hex | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  | representation.  The resulting string is therefore twice as long as | 
					
						
							|  |  |  | the length of \var{data}. | 
					
						
							| 
									
										
										
										
											2000-08-15 06:08:00 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{a2b_hex}{hexstr} | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  | \funcline{unhexlify}{hexstr} | 
					
						
							| 
									
										
										
										
											2000-08-15 06:08:00 +00:00
										 |  |  | Return the binary data represented by the hexadecimal string | 
					
						
							|  |  |  | \var{hexstr}.  This function is the inverse of \function{b2a_hex()}. | 
					
						
							|  |  |  | \var{hexstr} must contain an even number of hexadecimal digits (which | 
					
						
							|  |  |  | can be upper or lower case), otherwise a \exception{TypeError} is | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  | raised. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2000-08-15 06:08:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | \begin{excdesc}{Error} | 
					
						
							|  |  |  | Exception raised on errors. These are usually programming errors. | 
					
						
							|  |  |  | \end{excdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{excdesc}{Incomplete} | 
					
						
							|  |  |  | Exception raised on incomplete data. These are usually not programming | 
					
						
							| 
									
										
										
										
											1998-04-03 03:44:56 +00:00
										 |  |  | errors, but may be handled by reading a little more data and trying | 
					
						
							|  |  |  | again. | 
					
						
							| 
									
										
										
										
											1995-08-29 11:30:24 +00:00
										 |  |  | \end{excdesc} | 
					
						
							| 
									
										
										
										
											1999-04-23 15:42:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{seealso} | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  |   \seemodule{base64}{Support for base64 encoding used in MIME email messages.} | 
					
						
							| 
									
										
										
										
											1999-04-23 15:42:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  |   \seemodule{binhex}{Support for the binhex format used on the Macintosh.} | 
					
						
							| 
									
										
										
										
											1999-04-23 15:42:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-15 17:47:09 +00:00
										 |  |  |   \seemodule{uu}{Support for UU encoding used on \UNIX.} | 
					
						
							| 
									
										
										
										
											2001-09-30 20:32:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   \seemodule{quopri}{Support for quoted-printable encoding used in MIME email messages. } | 
					
						
							| 
									
										
										
										
											1999-04-23 15:42:36 +00:00
										 |  |  | \end{seealso} |