86 lines
1.2 KiB
C++
86 lines
1.2 KiB
C++
#include "stdlib.h"
|
|
|
|
#include "string.h"
|
|
|
|
void swap(int* x, int* y) {
|
|
int* t = x;
|
|
x = y;
|
|
y = t;
|
|
}
|
|
|
|
void reverse(char *s) {
|
|
int length, c;
|
|
char *begin, *end, temp;
|
|
|
|
length = strlen(s);
|
|
begin = s;
|
|
end = s;
|
|
|
|
for (c = 0; c < length - 1; c++)
|
|
end++;
|
|
|
|
for (c = 0; c < length/2; c++) {
|
|
temp = *end;
|
|
*end = *begin;
|
|
*begin = temp;
|
|
|
|
begin++;
|
|
end--;
|
|
}
|
|
}
|
|
|
|
|
|
char* itoa(int n, char* s) {
|
|
int i = 0;
|
|
bool isNegative = false;
|
|
|
|
if (n == 0) {
|
|
s[i++] = '0';
|
|
s[i] = '\0';
|
|
return s;
|
|
}
|
|
|
|
if (n < 0) {
|
|
isNegative = true;
|
|
n = -n;
|
|
}
|
|
|
|
while (n != 0) {
|
|
s[i++] = n % 10 + '0';
|
|
n /= 10;
|
|
}
|
|
|
|
if (isNegative)
|
|
s[i++] = '-';
|
|
|
|
s[i] = '\0';
|
|
|
|
reverse(s);
|
|
return s;
|
|
}
|
|
|
|
int hexlen(int n) {
|
|
if (!n) return 1;
|
|
|
|
int ret = 0;
|
|
for (; n; n >>= 4) {
|
|
++ret;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
char* itohx(int n, char* s) {
|
|
const char hex_lookup[] = "0123456789ABCDEF";
|
|
int len = hexlen(n);
|
|
|
|
if (len & 1) {
|
|
*s++ = '0';
|
|
}
|
|
s[len] = '\0';
|
|
|
|
for (--len; len >= 0; n >>= 4, --len) {
|
|
s[len] = hex_lookup[n & 0xf];
|
|
}
|
|
return s;
|
|
}
|