What is QQ?

Written by Dario Markz Wednesday, 01 February 2006

Base definition

Due to the absence of a better computer science standard upon this subject, we have developed our own.

In few words, QQ is a character subset category found in any character table.

Before introducing you to a detailed definition for QQ, let’s have a look at character tables.

Most character tables, designed to fulfil computer science needs or not, have the following character subsets:

Lower case characters: abcdefghijklmnopqrstuvwxyz
Numeric digits: 0123456789
Punctuation and symbols: “!@#$%”&*()_+’-=’`[]{}~^<>,.;:/?
Special characters: ç¹²³£¢¬\§€®ŧ←↓→øþªºæßðđŋħł«»©“”nµ

These subsets have poor (or no) standard definition, other than the popular (common sense) grouping definition presented above (upper case, lower case, digits, punctuation, symbols and special characters).

The only other major definition upon characters in any character table lies in whether they are printable or not.

And, for those unfamiliar with this concept, some characters in a character table can have no printable image. For example:

Null characters (special characters that represent commands): EOF, NULL, TAB, BACKSPACE, BELL etc

QQ is one extra definition to match the most important part of any character table: the printable characters (present in any character table, computer science based or not).

QQ is any printable char subset in a larger character table, containing only unique characters (no repetition).

Logic size

QQ character sets take one integer number to define the amount of characters in it: the logical size.

Thus, the popular character set known as “upper case characters” is, actually, one QQ-26 char set (26 characters from “A” to “Z”).

So, here’s the updated QQ definition for those character sets mentioned earlier:

QQ-26 (upper case characters): ABCDEFGHIJKLMNOPQRSTUVWXYZ
QQ-26 (lower case characters): abcdefghijklmnopqrstuvwxyz
QQ-10 (numeric digits): 0123456789
QQ-32 (this specific set of punctuation characters and symbols): “!@#$%”&*()_+’-=’`[]{}~^<>,.;:/?
QQ-33 (this specific set of special characters): ç¹²³£¢¬\§€®ŧ←↓→øþªºæßðđŋħł«»©“”nµ

You might notice that upper case and lower case character sets are both QQ26, and so are these mixed case character sets:

QQ-26 (mixed case character set): AbCdEfGhIjKlMnOpQrStUvWxYz
QQ-26 (mixed case character set): aBcDeFgHiJkLmNoPqRsTuVwXyZ
QQ-26 (mixed case character set): ABCDEFGHIJKLmnopqrstuvwxyz
QQ-26 (mixed case character set): abcdefghijklMNOPQRSTUVWXYZ

What happens when you add lower case “a” to the QQ26 upper case char set?

QQ-27 (mixed case character set): ABCDEFGHIJKLMNOPQRSTUVWXYZa

Please notice that there are no character order implied in QQ definition (only uniqueness):

QQ-27 (it’s the same mixed case character set above): aABCDEFGHIJKLMNOPQRSTUVWXYZ

So, keeping the uniqueness, if you mix multiple QQ character sets, you’ll end up with a larger QQ character set:

QQ-52 (upper + lower case character sets): ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

In many character tables, punctuation symbols may vary a little but generic symbols and special characters may widely vary so, be careful while checking whether the character you wish to add to a QQ character set is actually printable.

Physical size

The physical size applies mostly to computer science character tables.

Whenever the character table from which the characters in a QQ character set are going to be picked from, has a known bytes-per-character size (the number of unique characters in the table expressed by the number of bytes required to define them all), QQ character sets must take another integer number to describe the bytes-per-character in the original table followed to the table name.

So, the following two QQ character sets may look equal but they are just similar:

QQ-26-1-ASCII (upper case character set in 1 byte per character ratio, from ASCII character table): ABCDEFGHIJKLMNOPQRSTUVWXYZ
QQ-26-2-UTF16 (upper case character set in 2 bytes per character ratio, from UTF16 character table): ABCDEFGHIJKLMNOPQRSTUVWXYZ

In the example above, both QQ-26 character sets would print out only upper case characters making them logically equal. However, they are not physically identical as the first one takes only 1 byte pre character (from ASCII table) and the second takes 2 byes per character (from UTF16 table).

QQ-62 and QQ-64

One of the most important QQ character sets is the one composed by the sum of all upper case characters, plus all lower case characters, plus all digits, simply because these characters are present in almost every character table.

QQ-62 (basic printable western characters): ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

However, in the software industry, due to being the closest power of 2 next to 62, QQ-64 character sets are more popular.

One of these QQ-64 character sets widely used is a QQ-64-1-ASCII character set, known as Base64.

Here’s its character definition:

QQ-64-1-ASCII (Base64): ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

Base64 takes basic printable western characters, plus “+” (plus sign) and “/” (slash).

MakzCorp’s Prodigy Framework and QQ

Our framework is any sized QQ character set ready.

In other words, our framework can output text in any logically sized QQ character set and, in any physically (multi byte sized) character set from any character table.

Our product’s current DEMO versions use one specific QQ-64-1-ASCII character set but many others are in use by our team and customers.

Here are some examples:

QQ-64-1-ASCII (2016 Unlico DEMO): ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_|
QQ-16-1-ASCII (Powered of 2 deck of cards): 234567890JQKA$_|
QQ-32-1-ASCII (Basic symbols): !@#$%&*()_-+=[]{}<>,.;:/\?|^~'”‘
QQ-2-1-ASCII (Morse code): .-

Any QQ character set is available to our customers for customization of their exclusive products.