saves about 1120 bytes of flash

This might not look as pretty as sprintf(), but if you need flash some day this might be helpful.

FYI: A method with String objects takes about 120 bytes more flash than this one.