@@ -105,15 +105,21 @@ size_t Print::print(long n, int base) {
105
105
} else if (base == 10 ) {
106
106
if (n < 0 ) {
107
107
int t = print (' -' );
108
- n = -n;
109
- return printNumber (n, 10 ) + t;
108
+ return printNumber<unsigned long >(-n, 10 ) + t;
110
109
}
111
- return printNumber (n, 10 );
110
+ return printNumber< unsigned long > (n, 10 );
112
111
} else {
113
- return printNumber (n, base);
112
+ return printNumber< unsigned long > (n, base);
114
113
}
115
114
}
116
115
116
+ size_t Print::print (uint64_t n, int base) {
117
+ if (base == 0 )
118
+ return write (n);
119
+ else
120
+ return printNumber (n, base);
121
+ }
122
+
117
123
size_t Print::print (unsigned long n, int base) {
118
124
if (base == 0 )
119
125
return write (n);
@@ -181,6 +187,12 @@ size_t Print::println(long num, int base) {
181
187
return n;
182
188
}
183
189
190
+ size_t Print::println (uint64_t num, int base) {
191
+ size_t n = print (num, base);
192
+ n += println ();
193
+ return n;
194
+ }
195
+
184
196
size_t Print::println (unsigned long num, int base) {
185
197
size_t n = print (num, base);
186
198
n += println ();
@@ -201,9 +213,10 @@ size_t Print::println(const Printable& x) {
201
213
202
214
// Private Methods /////////////////////////////////////////////////////////////
203
215
204
- size_t Print::printNumber (unsigned long n, uint8_t base) {
205
- char buf[8 * sizeof (long ) + 1 ]; // Assumes 8-bit chars plus zero byte.
206
- char *str = &buf[sizeof (buf) - 1 ];
216
+ template <typename UINT_T>
217
+ size_t Print::printNumber (UINT_T n, uint8_t base) {
218
+ char buf[8 * sizeof (n) + 1 ]; // Assumes 8-bit chars plus zero byte.
219
+ char *str = buf + sizeof (buf) - 1 ;
207
220
208
221
*str = ' \0 ' ;
209
222
@@ -212,7 +225,7 @@ size_t Print::printNumber(unsigned long n, uint8_t base) {
212
225
base = 10 ;
213
226
214
227
do {
215
- unsigned long m = n;
228
+ UINT_T m = n;
216
229
n /= base;
217
230
char c = m - base * n;
218
231
*--str = c < 10 ? c + ' 0' : c + ' A' - 10 ;
0 commit comments