@@ -114,29 +114,36 @@ public async Task<string> Handle(Command request, CancellationToken cancellation
114
114
case "ASCII" :
115
115
result . AppendLine ( ConvertBinaryToAscii ( binaryStrings ) ) ;
116
116
break ;
117
+ case "NUMBERS" :
118
+ List < long > numbers = new ( ) ;
119
+ foreach ( var binaryString in binaryStrings )
120
+ {
121
+ var value = Convert . ToInt64 ( binaryString , 2 ) ;
122
+ numbers . Add ( value ) ;
123
+ }
124
+ result . AppendLine ( string . Join ( ", " , numbers ) ) ;
125
+ break ;
117
126
default :
118
127
List < byte > bytes = new ( ) ;
119
128
foreach ( var binaryString in binaryStrings )
120
129
{
121
- if ( binaryString . Length % 8 != 0 )
130
+ StringBuilder binaryStringBuilder = new ( ) ;
131
+ for ( int i = 0 ; i < binaryString . Length ; i ++ )
122
132
{
123
- bytes . Add ( Convert . ToByte ( binaryString ) ) ;
124
- }
125
- else
126
- {
127
- StringBuilder binaryStringBuilder = new ( ) ;
128
- for ( int i = 0 ; i < binaryString . Length ; i ++ )
133
+ binaryStringBuilder . Append ( binaryString [ i ] ) ;
134
+ if ( binaryStringBuilder . Length == 8 )
129
135
{
130
- binaryStringBuilder . Append ( binaryString [ i ] ) ;
131
- if ( binaryStringBuilder . Length % 8 == 0 )
136
+ var value = Convert . ToInt64 ( binaryString , 2 ) ;
137
+ if ( value is > byte . MaxValue or < byte . MinValue )
132
138
{
133
- bytes . Add ( Convert . ToByte ( binaryStringBuilder . ToString ( ) ) ) ;
134
- binaryStringBuilder . Clear ( ) ;
139
+ throw new Exception ( "Value is greater or less than byte max value" ) ;
135
140
}
141
+ bytes . Add ( Convert . ToByte ( value ) ) ;
142
+ binaryStringBuilder . Clear ( ) ;
136
143
}
137
-
138
- await File . WriteAllBytesAsync ( request . OutputType , bytes . ToArray ( ) , cancellationToken ) ;
139
144
}
145
+
146
+ await File . WriteAllBytesAsync ( request . OutputType , bytes . ToArray ( ) , cancellationToken ) ;
140
147
}
141
148
142
149
result . AppendLine ( $ "Please check the output file: { request . OutputType } ") ;
0 commit comments