so, as the title says, I can't convert numbers from char to integer. Am I doing something wrong?
Console.Clear();
int hourBin1 = 0, hourBin2 = 0, minuteBin1 = 0, minuteBin2 = 0, secondBin1 = 0, secondBin2 = 0;
int iteration=0;
void conversion(int variable){
int i=0;
int[] table = new int[6];
while(variable>0){
table[i]=variable%2;
Console.WriteLine($"{i} {variable} {table[i]}");
variable/=2;
i ;
}
int result = 0;
for(int j=i-1;j>=0;j--){
result*=10;
result =table[j];
}
if(iteration==0){
hourBin1=result;
iteration ;
}else if(iteration==1){
hourBin2=result;
iteration ;
}else if(iteration==2){
minuteBin1=result;
iteration ;
}else if(iteration==3){
minuteBin2=result;
iteration ;
}else if (iteration==4){
secondBin1=result;
iteration ;
}else if (iteration==5){
secondBin2=result;
iteration ;
}
}
Console.Write("enter date in HH:MM:SS format to convert: ");
string numberString = Console.ReadLine()!.Trim();
char[] separation = numberString.ToCharArray();
foreach (var x in separation){
Console.Write($"{x} ");
}
int hour1 = Convert.ToInt16(separation[0]);
int hour2 = Convert.ToInt16(separation[1]);
int minute1 = Convert.ToInt16(separation[3]);
int minute2 = Convert.ToInt16(separation[4]);
int second1 = Convert.ToInt16(separation[6]);
int second2 = Convert.ToInt16(separation[7]);
Console.WriteLine("converting to binary system");
conversion(hour1);
conversion(hour2);
conversion(minute1);
conversion(minute2);
conversion(second1);
conversion(second2);
Console.WriteLine($"\n{hour1} {hour2} {minute1} {minute2} {second1} {second2}");
Console.WriteLine($"hourBin1}\n{hourBin2}\n{minuteBin1}\n{minuteBin2}\n{secondBin1}\n{secondBin2}");
for example:
console outputs for "12:23:34" looks like this:
1 2 : 2 3 : 3 4 49 50 50 51 51 52
I want it to look like this :
1 2 : 2 3 : 3 4 1 2 2 3 3 4
and final output looks like this:
49 50 50 51 51 52 110001 110010 110010 110011 110011 110100
I want it to look like this :
1 2 2 3 3 4 0001 0010 0010 0011 0011 0100
PS for some reason, table cant take value smallet than 6, any ideas why?
CodePudding user response:
There are basically the equivalent ASCII values, all you can do is simply subtract 48 from each value then you will get the exact value. ASCII value of char 1
is 49.
int hour1 = Convert.ToInt16(separation[0]) - 48;