Yamagata Yoriyuki wrote:
Still has the redundant tests here.
let add_uchar buf u =
let masq = 0b111111 in
let k = int_of_uchar u in
if k >= 0 && k <= 0x7f then
Buffer.add_char buf (Char.chr k)
else if k >= 0x80 && k <= 0x7ff then begin
Buffer.add_char buf (Char.chr (0xc0 lor (k lsr 6)));
Buffer.add_char buf (Char.chr (0x80 lor (k land masq)))
end else if k >= 0x800 && k <= 0xffff then begin
Buffer.add_char buf (Char.chr (0xe0 lor (k lsr 12)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
end else if k >= 0x10000 && k <= 0x1fffff then begin
Buffer.add_char buf (Char.chr (0xf0 + (k lsr 18)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 12) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
end else if k >= 0x200000 && k <= 0x3ffffff then begin
Buffer.add_char buf (Char.chr (0xf8 + (k lsr 24)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 18) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 12) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
end else begin
Buffer.add_char buf (Char.chr (0xfc + (k lsr 30)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 24) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 18) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 12) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
end
--
John Max Skaller, mailto:skaller@xxxxxxxxxxxxxx
snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850
-------------------------------------------------------
This SF.Net email is sponsored by: INetU
Attention Web Developers & Consultants: Become An INetU Hosting Partner.
Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission!
INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php
|
Try Searching:
servers, voip, java, networking, microsoft ...
|
|
|
|