Skip to content

Commit 838f790

Browse files
authored
Added the PRINT_LEADINGZERO functionality
if PRINT_LEADINGZERO is in the arg, add a leading zero to a HEX if the value is smaler than 0x10
1 parent 21886fb commit 838f790

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

hardware/arduino/avr/cores/arduino/Print.cpp

+27-25
Original file line numberDiff line numberDiff line change
@@ -69,41 +69,41 @@ size_t Print::print(char c)
6969
return write(c);
7070
}
7171

72-
size_t Print::print(unsigned char b, int base)
72+
size_t Print::print(unsigned char b, int base, int arg)
7373
{
74-
return print((unsigned long) b, base);
74+
return print((unsigned long) b, base, arg);
7575
}
7676

77-
size_t Print::print(int n, int base)
77+
size_t Print::print(int n, int base, int arg)
7878
{
79-
return print((long) n, base);
79+
return print((long) n, base, arg);
8080
}
8181

82-
size_t Print::print(unsigned int n, int base)
82+
size_t Print::print(unsigned int n, int base, int arg)
8383
{
8484
return print((unsigned long) n, base);
8585
}
8686

87-
size_t Print::print(long n, int base)
87+
size_t Print::print(long n, int base, int arg)
8888
{
8989
if (base == 0) {
9090
return write(n);
9191
} else if (base == 10) {
9292
if (n < 0) {
9393
int t = print('-');
9494
n = -n;
95-
return printNumber(n, 10) + t;
95+
return printNumber(n, 10, arg) + t;
9696
}
97-
return printNumber(n, 10);
97+
return printNumber(n, 10, arg);
9898
} else {
99-
return printNumber(n, base);
99+
return printNumber(n, base, arg);
100100
}
101101
}
102102

103-
size_t Print::print(unsigned long n, int base)
103+
size_t Print::print(unsigned long n, int base, int arg)
104104
{
105105
if (base == 0) return write(n);
106-
else return printNumber(n, base);
106+
else return printNumber(n, base, arg);
107107
}
108108

109109
size_t Print::print(double n, int digits)
@@ -149,37 +149,37 @@ size_t Print::println(char c)
149149
return n;
150150
}
151151

152-
size_t Print::println(unsigned char b, int base)
152+
size_t Print::println(unsigned char b, int base, int arg)
153153
{
154-
size_t n = print(b, base);
154+
size_t n = print(b, base, arg);
155155
n += println();
156156
return n;
157157
}
158158

159-
size_t Print::println(int num, int base)
159+
size_t Print::println(int num, int base, int arg)
160160
{
161-
size_t n = print(num, base);
161+
size_t n = print(num, base, arg);
162162
n += println();
163163
return n;
164164
}
165165

166-
size_t Print::println(unsigned int num, int base)
166+
size_t Print::println(unsigned int num, int base, int arg)
167167
{
168-
size_t n = print(num, base);
168+
size_t n = print(num, base, arg);
169169
n += println();
170170
return n;
171171
}
172172

173-
size_t Print::println(long num, int base)
173+
size_t Print::println(long num, int base, int arg)
174174
{
175-
size_t n = print(num, base);
175+
size_t n = print(num, base, arg);
176176
n += println();
177177
return n;
178178
}
179179

180-
size_t Print::println(unsigned long num, int base)
180+
size_t Print::println(unsigned long num, int base, int arg)
181181
{
182-
size_t n = print(num, base);
182+
size_t n = print(num, base, arg);
183183
n += println();
184184
return n;
185185
}
@@ -200,7 +200,7 @@ size_t Print::println(const Printable& x)
200200

201201
// Private Methods /////////////////////////////////////////////////////////////
202202

203-
size_t Print::printNumber(unsigned long n, uint8_t base)
203+
size_t Print::printNumber(unsigned long n, uint8_t base, uint8_t arg)
204204
{
205205
char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.
206206
char *str = &buf[sizeof(buf) - 1];
@@ -209,14 +209,16 @@ size_t Print::printNumber(unsigned long n, uint8_t base)
209209

210210
// prevent crash if called with base == 1
211211
if (base < 2) base = 10;
212-
213-
do {
212+
//the argument is only valid for HEX values smaler than 0x10
213+
if(base != 8 || n>=16) arg = 0;
214+
215+
do {
214216
char c = n % base;
215217
n /= base;
216218

217219
*--str = c < 10 ? c + '0' : c + 'A' - 10;
218220
} while(n);
219-
221+
if(arg == 1)*--str = '0';
220222
return write(str);
221223
}
222224

0 commit comments

Comments
 (0)