ASCII To Octal

This algorithm converts ASCII code to octal numbers.



									/*****Please include following header files*****/
// stdint.h
/***********************************************/

char* AppendString(const char* str1, const char* str2) {
	int str1Len = strlen(str1);
	int str2Len = strlen(str2);
	int strLen = str1Len + str2Len + 1;
	char* str = malloc(strLen);

	for (int i = 0; i < str1Len; i++)
		str[i] = str1[i];

	for (int i = 0; i < str2Len; i++)
		str[(str1Len + i)] = str2[i];

	str[strLen - 1] = '\0';

	return str;
}

char* GetSubString(char* str, int index, int count) {
	int strLen = strlen(str);
	int lastIndex = index + count;

	if (index >= 0 && lastIndex > strLen) return "";

	char* subStr = malloc(count + 1);

	for (int i = 0; i < count; i++) {
		subStr[i] = str[index + i];
	}

	subStr[count] = '\0';

	return subStr;
}

char* InsertString(char* str, int index, char* subStr) {
	char* s = GetSubString(str, 0, index);
	s = AppendString(s, subStr);
	s = AppendString(s, GetSubString(str, index, strlen(str) - index));

	return s;
}

char* DecimalToOctal(int dec)
{
	if (dec < 1) return "0";

	char* octStr = "";

	while (dec > 0)
	{
		char* s = malloc(11);
		_itoa(dec % 8, s, 10);
		octStr = InsertString(octStr, 0, s);
		dec /= 8;
	}

	return octStr;
}

char* ASCIIToOctal(char* str) {
	char* oct = "";
	int strLen = strlen(str);

	for (int i = 0; i < strLen; ++i)
	{
		char* cOct = DecimalToOctal(str[i]);
		int cOctLen = strlen(cOct);

		if (cOctLen < 3)
			for (size_t j = 0; j < (3 - cOctLen); j++)
			cOct = InsertString(cOct, 0, "0");

		oct = AppendString(oct, cOct);
	}

	return oct;
}
								


Example

									char* data = "Programming Algorithms";
char* value = ASCIIToOctal(data);
								


Output

									120162157147162141155155151156147040101154147157162151164150155163