1 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
36 if (counter + 1 <= len)
37 (0...counter).each {|j|
38 cid = (cid << 6) | (str[j + i] & 0x3F)
47 raise unless cid.kind_of?(Integer)
52 dest[0] = (cid >> 6) | 0xC0
53 dest[1] = (cid & 0x3F) | 0x80
57 dest[0] = (cid >> 12) | 0xE0
58 dest[1] = ((cid >> 6) & 0x3F) | 0x80
59 dest[2] = (cid & 0x3F) | 0x80
61 elsif (cid <= 0x1FFFFF)
63 dest[0] = (cid >> 18) | 0xF0
64 dest[1] = ((cid >> 12) & 0x3F) | 0x80
65 dest[2] = ((cid >> 6) & 0x3F) | 0x80
66 dest[3] = (cid & 0x3F) | 0x80
68 elsif (cid <= 0x3FFFFFF)
70 dest[0] = (cid >> 24) | 0xF8
71 dest[1] = ((cid >> 18) & 0x3F) | 0x80
72 dest[2] = ((cid >> 12) & 0x3F) | 0x80
73 dest[3] = ((cid >> 6) & 0x3F) | 0x80
74 dest[4] = (cid & 0x3F) | 0x80
78 dest[0] = (cid >> 30) | 0xFC
79 dest[1] = ((cid >> 24) & 0x3F) | 0x80
80 dest[2] = ((cid >> 18) & 0x3F) | 0x80
81 dest[3] = ((cid >> 12) & 0x3F) | 0x80
82 dest[4] = ((cid >> 6) & 0x3F) | 0x80
83 dest[5] = (cid & 0x3F) | 0x80