SMS messages are 7-bit ASCII packed into an 8-bit stream. You can read about the format in section 6.1 of the specification (pdf)
In your example "C8 34" is equal to:
Hex Binary
C8 11001000
34 00110100
When split using the rules in the document it looks like this:
Hex Binary
48 1001000 most significant bit is moved to next char's least significant bit
69 1101001
00 00
To parse this you want to do something like this:
bytes = (0xC8, 0xF7, 0x1D, 0x14, 0x96, 0x97, 0x41, 0xF9, 0x77, 0xFD, 0x07)
number = 0
bitcount = 0
output = ''
for byte in bytes:
# add data on to the end
number = number + (byte << bitcount)
# increase the counter
bitcount = bitcount + 1
# output the first 7 bits
output = output + '%c' % (number % 128)
# then throw them away
number = number >> 7
# every 7th letter you have an extra one in the buffer
if bitcount == 7:
output = output + '%c' % (number)
bitcount = 0
number = 0
print output
Not the most elegant solution but it should work. Here's a JavaScript implementation that may also help.