pub struct Bits { /* fields omitted */ }
The Bits
structure stores the encoded data for a QR code.
Constructs a new, empty bits structure.
Convert the bits into a bytes vector.
Total number of bits currently pushed.
Whether there are any bits pushed.
The maximum number of bits allowed by the provided QR code version and
error correction level.
Push the mode indicator to the end of the bits.
If the mode is not supported in the provided version, this method
returns Err(QrError::UnsupportedCharacterSet)
.
Push an ECI (Extended Channel Interpretation) designator to the bits.
An ECI designator is a 6-digit number to specify the character set of
the following binary data. After calling this method, one could call
.push_byte_data()
or similar methods to insert the actual data, e.g.
#![allow(unused_must_use)]
use qrcode::bits::Bits;
use qrcode::types::Version;
let mut bits = Bits::new(Version::Normal(1));
bits.push_eci_designator(9);
bits.push_byte_data(b"\xa1\xa2\xa3\xa4\xa5");
The full list of ECI designator values can be found from
http://strokescribe.com/en/ECI.html. Some example values are:
ECI # | Character set |
3 | ISO-8859-1 (Western European) |
20 | Shift JIS (Japanese) |
23 | Windows 1252 (Latin 1) (Western European) |
25 | UTF-16 Big Endian |
26 | UTF-8 |
28 | Big 5 (Traditional Chinese) |
29 | GB-18030 (Simplified Chinese) |
30 | EUC-KR (Korean) |
If the QR code version does not support ECI, this method will return
Err(QrError::UnsupportedCharacterSet)
.
If the designator is outside of the expected range, this method will
return Err(QrError::InvalidECIDesignator)
.
Encodes a numeric string to the bits.
The data should only contain the characters 0 to 9.
Encodes an alphanumeric string to the bits.
The data should only contain the charaters A to Z (excluding lowercase),
0 to 9, space, $
, %
, *
, +
, -
, .
, /
or :
.
Encodes 8-bit byte data to the bits.
Encodes Shift JIS double-byte data to the bits.
Encodes an indicator that the following data are formatted according to
the UCC/EAN Application Identifiers standard.
#![allow(unused_must_use)]
use qrcode::bits::Bits;
use qrcode::types::Version;
let mut bits = Bits::new(Version::Normal(1));
bits.push_fnc1_first_position();
bits.push_numeric_data(b"01049123451234591597033130128");
bits.push_alphanumeric_data(b"%10ABC123");
In QR code, the character %
is used as the data field separator (0x1D).
Encodes an indicator that the following data are formatted in accordance
with specific industry or application specifications previously agreed
with AIM International.
#![allow(unused_must_use)]
use qrcode::bits::Bits;
use qrcode::types::Version;
let mut bits = Bits::new(Version::Normal(1));
bits.push_fnc1_second_position(37);
bits.push_alphanumeric_data(b"AA1234BBB112");
bits.push_byte_data(b"text text text text\r");
If the application indicator is a single Latin alphabet (a–z / A–Z),
please pass in its ASCII value + 100:
bits.push_fnc1_second_position(b'A' + 100);
Pushes the ending bits to indicate no more data.
Push a segmented data to the bits, and then terminate it.
Pushes the data the bits, using the optimal encoding.