public override void encodeData(string data) { List <bool> temp = new List <bool>(); switch (format.getEncodingMode()) { case DataStreamEncodingMode.AlphaNumeric: // If the number of characters is not even, it appends a space to make it even if (data.Length % 2 != 0) { data += " "; } // Updates the character count characterCount = new AQRDataStreamData("Character Count", QRCode.ConvertToBoolean(data.Length / 2, characterCountBitCount)); temp = new List <bool>((data.Length / 2) * bitsPerCharacter); for (int i = 0; i < data.Length; i += 2) { int pair = QRCode.FindAlphaNumericPair(data[i], data[i + 1]); temp.AddRange(QRCode.ConvertToBoolean(pair, bitsPerCharacter)); } dataBitStream = new AQRDataStreamData("Data Bit Stream", temp.ToArray()); break; case DataStreamEncodingMode.Byte: // Updates the character count characterCount = new AQRDataStreamData("Character Count", QRCode.ConvertToBoolean(data.Length, characterCountBitCount)); temp = new List <bool>(data.Length * bitsPerCharacter); foreach (char c in data) { temp.AddRange(QRCode.ConvertToBoolean(c, bitsPerCharacter)); } dataBitStream = new AQRDataStreamData("Data Bit Stream", temp.ToArray()); break; case DataStreamEncodingMode.Kanji: throw new NotImplementedException(); break; case DataStreamEncodingMode.Numeric: throw new NotImplementedException(); break; default: throw new Exception("No valid encoding method found!"); } }