wrt your original question, - it depends upon:
- what the source value is
-what you are trying to achieve.
BINTOASCII will take a value such as 123 and convert it into three separate ASCII code values so 123 becomes “1”, “2” and “3” each in a separate variable as you have found.
Then if for instance you are taking the BCD code from a DS1307 real time clock you can use BCDTOASCII which takes a value (eg 45) and splits out the two digits “4” and “5” into separate variables.
At the primitive level, and basically what the BINTOASCII does, if you have a single digit 0 to 9 then you can add 48 ($30) to convert it to an ASCII code for that value.
EDIT: following not valid for i2c comms
Other formatting options include placing a hash symbol (#) in front of a variable name
So if b0 = 123 then you can use #b0
Writei2c 0, (“temp=”,#b0, 255)
an advantage of the hash symbol (#) method is that it does not require the use of additional variables as an intermediate step.