|
I wonder if you speak about two kinds of 'characters' lets say that an array contains
"ABCD" - those are four characters.
If you treat that as an integer you get the number
1145258561, or 0x44434241 - this is probaby what the original poster meant - _converted_ to characters, a number will take more space.
But any sequence of bytes can be seen as anything, char, float, char*, struct foo*,
So, when a network protocol sends 'characters'- you can make those characters mean anything you want, put two together, and you have a 16 bit short, etc.
But beware of how your machine stores integers!
The bytes above may have looked like
"BADC" on some machines to give the same number!
If I am not mistaken, I think the IBM PC is one of them ...
Look at
man htonl
man htons
Then you will understand why it just sends 'characters'- to make it an 'int'you use one of those functions, that puts the bytes in the right 'network'order, and put them back to local 'machine' order.
I often randomize characters with the % operator.
rand() % 10 gives 0-9
rand() % ('z'-'a') + 'a' is also an interesting contruct
Some fun: Remember that characters, int, floats and all that are really just bits.
If you want char is a certain range, maybe you can just chop off some bits!
0123456701234567
1001010011101011
0000111110000000 <- maybe you just want those
-----------------
0000010010000000
This would make it fast by just using one machine op,
AND byte, 000011111
__________________
PS
All of the above is to be read as '... unless I am wrong'
ENDPS
Last edited by AtleRamsli; 03-19-2002 at 03:27 AM.
|