Contributor: LOU DUCHEZ { LOU DUCHEZ >does andbody know an easy way to convert a Byte value from it's Integer > notation to hex notatation? Well, thank you For this message. It finally got me off my keister (sp?) to Write a "decimal-to-hex" converter -- a project I'd been meaning to do, but never got around to. (Technically, since I was in a seated position, I remained on my keister the whole time, but you know what I mean). Actually, the following is not just "decimal-to-hex" -- it's decimal-to-any-base-from- 2-to-36-converter (because base 1 and below doesn't make sense, and after base 36 I run out of alphabet to represent "digits"). Here is NUBASE: } Function nubase(numin : LongInt; base, numplaces : Byte) : String; Var tmpstr : String; remainder : Byte; negatize : Boolean; begin negatize := (numin < 0); { Record if it's a negative number } if negatize then numin := abs(numin); { convert to positive For calcs } tmpstr[0] := Char(numplaces); { set length of the output String } While numplaces > 0 do begin { Loop: fills each space in String } remainder := numin mod base; { get next "digit" (under new base) } if remainder > 9 then tmpstr[numplaces] := Char(remainder + 64 - 9) { convert to letter } else tmpstr[numplaces] := Char(remainder + 48); { use number as is } numin := numin div base; { reduce dividend For next "pass" } numplaces := numplaces - 1; { go to "next" position in String } end; { end of loop } { The following: if we've run out of room on the String, or if it's a negative number and there's not enough space For the "minus" sign, convert the output String to all asterisks. } if (numin <> 0) or (negatize and (tmpstr[1] <> '0')) then For numplaces := 1 to Byte(tmpstr[0]) do tmpstr[numplaces] := '*'; { add minus sign } if negatize and (tmpstr[1] = '0') then tmpstr[1] := '-'; nubase := tmpstr; end; { Feed it the number to convert, the base to convert into, and the number of spaces you want For it. Leading zeros will be provided. Example: to convert 111 into hex (base 16) and give 4 digits of answer, you could say: Writeln(nubase(111, 16, 4)) and it'd Write out: 006F This routine does handle negative numbers too. if you don't give it enough "space" in the third parameter you pass, it'll return all asterisks. For laughs, try converting the number 111 into base 10 and giving it 5 digits of answer. You'll get: 00111 (predictably enough) }