1 #ifndef LIBPROPELLER_NUMBERS_H_ 2 #define LIBPROPELLER_NUMBERS_H_ 29 static char *
Dec(
int number,
char result_string[] = NULL) {
30 if (result_string == NULL) {
31 result_string = internalBuffer;
36 if ((sign = number) < 0)
40 result_string[i++] = number % 10 +
'0';
41 }
while ((number /= 10) > 0);
43 result_string[i++] =
'-';
44 result_string[i] =
'\0';
57 static char *
ZeroPad(
char * resultString,
int minDigits,
bool countSign =
false) {
59 int numDigits = strlen(resultString);
60 int digitStartIndex = 0;
62 if (resultString[0] ==
'-' || resultString[0] ==
'+') {
64 if(countSign ==
false){
69 if (numDigits < minDigits) {
70 int difference = minDigits - numDigits;
71 for (
int i = numDigits - 1; i >= 0; i--) {
72 resultString[i + difference + digitStartIndex] = resultString[i + digitStartIndex];
75 for (
int i = 0; i < difference; i++) {
76 resultString[i + digitStartIndex] =
'0';
79 resultString[minDigits + digitStartIndex] =
'\0';
97 static int Dec(
const char * number,
const char terminator =
'\0') {
100 bool isNegative =
false;
101 if (number[index] ==
'-') {
105 for (; number[index] != terminator; index++) {
107 if (number[index] <
'0' || number[index] >
'9') {
112 result = (result * 10) + (number[index] -
'0');
133 static char *
Hex(
int number,
const int num_digits,
char result_string[] = NULL) {
134 if (result_string == NULL) {
135 result_string = internalBuffer;
137 static const char characters[] =
"0123456789ABCDEF";
139 for (i = 0; i < num_digits; i++) {
140 result_string[i] = characters[number & 0xF];
143 result_string[i] = 0;
145 return result_string;
159 static char *
Bin(
int number,
int num_digits,
char result_string[] = NULL) {
160 if (result_string == NULL) {
161 result_string = internalBuffer;
164 static const char characters[] =
"01";
166 for (i = 0; i < num_digits; i++) {
167 result_string[i] = characters[number & 0b1];
170 result_string[i] = 0;
172 return result_string;
186 if (number < 100000) {
208 if (number < 10000000) {
210 if (number < 1000000)
216 if (number < 100000000)
220 if (number < 1000000000)
234 if ((n & 0xFFFF) == n) {
236 if ((n & 0xFF) == n) {
244 if ((n & 0xFFF) == n)
251 if ((n & 0xFFFFFF) == n) {
253 if ((n & 0xFFFFF) == n)
258 if ((n & 0xFFFFFFF) == n)
278 for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
291 static char internalBuffer[];
296 #ifdef SINGLE_TRANSLATION_UNIT 297 #include "numbers.cpp" 300 #endif // LIBPROPELLER_NUMBERS_H_ static int Dec(const char *number, const char terminator= '\0')
static char * Hex(int number, const int num_digits, char result_string[]=NULL)
static char * Bin(int number, int num_digits, char result_string[]=NULL)
static char * Dec(int number, char result_string[]=NULL)
static char * ZeroPad(char *resultString, int minDigits, bool countSign=false)
static int HexDigits(const int n)
static char * Reverse(char s[])
static int DecDigits(int number)