The BCD to ASCII approach is a reasonable one. ASCII encodes characters as numbers from 0 - 255. Acutally, only the first 128 positions are in the standard ASCII set. The upper 128 are not well standardized, some of the competing standards being DOS-ASCII, extended ASCII, and ISO Latin-1. The first 32 (numbers 0 - 31) are 'control characters', most of which are rarely used. Some commonly used ones are 0x09 tab 0x0A line feed 0x0D carriage return 0x00 has become special because it is the end of string marker for C and C++ string handling. Hence embedding a nul in a message is a sure way to be unpopular. 0x20 is space. The digits are encoded starting with 0x30 = '0' . This makes conversion very sim ple - just add 0x30 to a number from 0 - 9 and you have the character that represents it. Now, BCD is an old format for representing numbers by powers of 10. Originally it was 4 bits packed in the upper nybble and 4 bits packed in the lower nybble, but you have to be perverse to do that anymore. Nowadays it's just 4 bits/byte, with the values garaunteed to be 0-9 So, take your binary - BCD converter's output, unpack it if necessary, and just add 0x30 to it. Here's a table of the entire ascii set http://members.tripod.com/~plangford/index.html -- Anniepoo Need loco motors? http://www.idiom.com/~anniepoo/depot/motors.html