I'ts been a very long time since I've had to play with C#. (Heavy C++ background.) A buddy of mine wanted me to write a library for he's project that would allow him to access this database server I've been building from scratch and I've ran into a few problems. Of course one mainly being hex values and converting them to char. I've been Googling and playing around with the code, but nothing is really working for me.
Here is a base64 encoder that I'm trying to convert to C# from C++.
private static const String base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"abcdefghijklmnopqrstuvwxyz" +
"0123456789+/";
private static bool is_base64(char c)
{
if(c < 0)
{
return false;
}
return (char.IsLetterOrDigit(c) || (c == '+') || (c == '/'));
}
String base64_encode(char[] bytes_to_encode, int in_len)
{
String ret;
int i = 0;
int j = 0;
char[] char_array_3 = new char[3];
char[] char_array_4 = new char[4];
while (in_len > -1)
{
in_len--;
char_array_3[i++] = *(bytes_to_encode++);
if (i == 3) {
char_array_4[0] = (char_array_3[0] & (char)0xfc) >> 2;
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
char_array_4[3] = char_array_3[2] & 0x3f;
for(i = 0; (i <4) ; i++)
ret += base64_chars[char_array_4[i]];
i = 0;
}
}
if (i > 0)
{
for(j = i; j < 3; j++)
char_array_3[j] = '\0';
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
char_array_4[3] = char_array_3[2] & char(0x3f);
for (j = 0; (j < i + 1); j++)
ret += base64_chars[char_array_4[j]];
while((i++ < 3))
ret += '=';
}
return ret;
}
Of course I'm getting the cannot convert int to char error on the lines using hex. I tried of course doing "(char)0xc0" and "unchecked((char)0x3f)". But nothing is really standing out as a answer.