#include <stdio.h>
#include <stdlib.h>
int itoa(int num
, char* str
, int len
, int base
);
int main(void) {
char bits[9];
int len;
for (int i = 0; i < 0x100; ++i) {
if (len) {
fprintf(stdout
, "%0*d%s %4u %4d\n", len
, 0, bits
, (unsigned char)i
, (char)i
); } else {
fprintf(stdout
, "%s %4u %4d\n", bits
, (unsigned char)i
, (char)i
); }
}
return 0;
}
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void
strrev(unsigned char *str);
int
itoa(int num
, char* str
, int len
, int base
) {
int sum = num;
int i = 0;
int digit;
if (len == 0)
return -1;
do
{
digit = sum % base;
if (digit < 0xA)
str[i++] = '0' + digit;
else
str[i++] = 'A' + digit - 0xA;
sum /= base;
}while (sum && (i < (len - 1)));
if (i == (len - 1) && sum)
return -1;
str[i] = '\0';
strrev(str);
return 0;
}
void
strrev(unsigned char *str)
{
int i;
int j;
unsigned char a;
unsigned len
= strlen((const char *)str
); for (i = 0, j = len - 1; i < j; i++, j--)
{
a = str[i];
str[i] = str[j];
str[j] = a;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBpdG9hKGludCBudW0sIGNoYXIqIHN0ciwgaW50IGxlbiwgaW50IGJhc2UpOwoKaW50IG1haW4odm9pZCkgewoJY2hhciBiaXRzWzldOwoJaW50ICBsZW47CglmcHJpbnRmKHN0ZG91dCwgImJpdHMgICAgIHVjICBzY1xuIik7Cglmb3IgKGludCBpID0gMDsgaSA8IDB4MTAwOyArK2kpIHsKCQlpdG9hKGksIGJpdHMsIDksIDIpOwoJCWxlbiA9IDggLSBzdHJsZW4oYml0cyk7CgkJaWYgKGxlbikgewoJCQlmcHJpbnRmKHN0ZG91dCwgIiUwKmQlcyAlNHUgJTRkXG4iLCBsZW4sIDAsIGJpdHMsICh1bnNpZ25lZCBjaGFyKWksIChjaGFyKWkpOwoJCX0gZWxzZSB7CgkJCWZwcmludGYoc3Rkb3V0LCAiJXMgJTR1ICU0ZFxuIiwgYml0cywgKHVuc2lnbmVkIGNoYXIpaSwgKGNoYXIpaSk7CgkJfQoJfQoJcmV0dXJuIDA7Cn0KCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8Y3R5cGUuaD4Kdm9pZApzdHJyZXYodW5zaWduZWQgY2hhciAqc3RyKTsKaW50Cml0b2EoaW50IG51bSwgY2hhciogc3RyLCBpbnQgbGVuLCBpbnQgYmFzZSkKewoJaW50IHN1bSA9IG51bTsKCWludCBpID0gMDsKCWludCBkaWdpdDsKCWlmIChsZW4gPT0gMCkKCQlyZXR1cm4gLTE7CglkbwoJewoJCWRpZ2l0ID0gc3VtICUgYmFzZTsKCQlpZiAoZGlnaXQgPCAweEEpCgkJCXN0cltpKytdID0gJzAnICsgZGlnaXQ7CgkJZWxzZQoJCQlzdHJbaSsrXSA9ICdBJyArIGRpZ2l0IC0gMHhBOwoJCXN1bSAvPSBiYXNlOwoJfXdoaWxlIChzdW0gJiYgKGkgPCAobGVuIC0gMSkpKTsKCWlmIChpID09IChsZW4gLSAxKSAmJiBzdW0pCgkJcmV0dXJuIC0xOwoJc3RyW2ldID0gJ1wwJzsKCXN0cnJldihzdHIpOwoJcmV0dXJuIDA7Cn0KCnZvaWQKc3RycmV2KHVuc2lnbmVkIGNoYXIgKnN0cikKewoJaW50IGk7CglpbnQgajsKCXVuc2lnbmVkIGNoYXIgYTsKCXVuc2lnbmVkIGxlbiA9IHN0cmxlbigoY29uc3QgY2hhciAqKXN0cik7Cglmb3IgKGkgPSAwLCBqID0gbGVuIC0gMTsgaSA8IGo7IGkrKywgai0tKQoJewoJCWEgPSBzdHJbaV07CgkJc3RyW2ldID0gc3RyW2pdOwoJCXN0cltqXSA9IGE7Cgl9Cn0=