As I understand it, Windows Unicode uses 2 bytes per character. In many cases, the upper byte is zero. This seems to be at least true for all characters up to lower case 'z' (0x7A). So the non-unicode string HELLO would be:-

Code:
0x48 0x45 0x4C 0x4C 0x4F
   H    E    L    L    O
whereas its unicode equivalent would be:-

Code:
0x48 0x00 0x45 0x00 0x4C 0x00 0x4C 0x00 0x4F 0x00
   H         E         L         L         O
At what point do we start getting a non-zero value in that upper byte? Is it after (say) character 0x7F? Or do all the first 256 characters give a zero value for the 2nd byte?

Basically, I'm trying to figure out if there's a way to convert (very simple) Windows unicode strings to single-byte strings on a non-Windows platform (i.e. where we don't have wcstombs() available). If I knew that each value was always going to be less than 256, could I do a cheap-and-dirty conversion by just taking every alternate byte?