In Unix 3.0, there is an explicit distinction between these two: for a long, you must use the l prefix, while an uppercase conversion letter specifies a variant style. X is uppercase hex, O is octal with a leading zero (hooray!), E is like e but with an uppercase 'e', etc. Converting to this from V7 may be a little awkward, though...