#!/usr/bin/env cscript #include #include void rxPos(int n, char *buf) { int m, address_length; const char *ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char character, *address_needle, address[1 + 3]/* XFD が最大の列コードである。 */; for (address_length = 0, m = n; m > 0; m /= strlen(ALPHABET) + 1, address_length++); for (m = n - 1, address_needle = address; m >= 0; m /= strlen(ALPHABET), m -= 1) { printf("%c\n", 'A' + m % strlen(ALPHABET)); *address_needle++ = 'A' + m % strlen(ALPHABET); } *++address_needle = '\0'; switch (address_length) { case 2: character = address[0]; address[0] = address[1]; address[1] = character; break; case 3: character = address[2]; address[2] = address[0]; address[0] = character; break; } strcpy(buf, address); } int main(int argc, char *argv[]) { char address[1 + 3]; //rxPos(675, address); //printf("%s\n", address); rxPos(674, address); printf("[%s]\n", address); rxPos(675, address); printf("[%s]\n", address); rxPos(676, address); printf("[%s]\n", address); rxPos(703, address); printf("[%s]\n", address); rxPos(1048576, address); printf("[%s]\n", address); return 0; }