Ошибка конвертирования string to int - C#
Формулировка задачи:
Всем привет! Я переписал на C# и у меня получилось следующее
Очень прошу помощи
. в решение проблемы. Переписываю методы на Java, которые декодируют строку, ключом которого является OS имя пользователя Есть 2 метода на Java, которые я переписываю на C#. Ключ: Jallvar Сообщение: 353c343e353d383e36353a3e36353a3e36373a3e353d383e36363c3e Зашифровано: jallvar Выдает ошибку: неверный входящий аргумент в методе decode, на строке: int x = Convert.ToInt32(var8) - Convert.ToInt32(var5[var7]); Жалоба на переменную var8 На JAVA public static String decode(String var0, String var1) {
String var2 = h2s(var0);
if(!var2.equals("") && var2.contains(":")) {
String var3 = "";
for(String var4 = ""; var3.length() < var2.split(":").length; var3 = var3 + var1) {
;
}
byte[] var5 = var3.getBytes();
byte[] var6 = new byte[var2.split(":").length];
int var7 = 0;
String[] var11;
int var10 = (var11 = var2.split(":")).length;
for(int var9 = 0; var9 < var10; ++var9) {
String var8 = var11[var9];
var6[var7] = (byte)(Integer.valueOf(var8).intValue() - Integer.valueOf(var5[var7]).intValue());
++var7;
}
return new String(var6);
} else {
return "";
}
}
public static String h2s(String var0) {
if(var0 == null) {
return "";
} else if(!var0.matches("[0-9a-f]+")) {
return var0;
} else {
byte[] var1 = (new BigInteger(var0, 16)).toByteArray();
byte[] var2 = new byte[var1.length];
for(int var3 = 0; var3 < var1.length; ++var3) {
var2[var3] = (byte)(var1[var3] - 4);
}
String var6 = new String(var2);
try {
var6 = URLDecoder.decode(var6.toString(), "CP1251");
} catch (UnsupportedEncodingException var5) {
var6 = var6.toString();
}
return var6;
}
} static class Decode
{
static Regex h2sReg = new Regex("[0-9a-f]+");
public static string decode(string var0)
{
Console.WriteLine(Environment.UserName);
string var1 = (Environment.UserName.Length > 0) ? Environment.UserName : "nullkey";
string var2 = h2s(var0);
if (var2.Length > 0 && var2.Contains("-"))
{
string var3 = "";
for (string var4 = ""; var3.Length < var2.Split('-').Length; var3 = var3 + var1)
{
;
}
byte[] var5 = GetBytes(var3);
byte[] var6 = new byte[var2.Split('-').Length];
int var7 = 0;
string[] var11;
int var10 = (var11 = var2.Split('-')).Length;
for (int var9 = 0; var9 < var10; var9++)
{
string var8 = var11[var9].ToString();
int x = Convert.ToInt32(var8) - Convert.ToInt32(var5[var7]);
var6[var7] = (byte)(x);
var7++;
}
return BitConverter.ToString(var6);
}
else {
return "";
}
}
public static string h2s(string var0)
{
if (var0 == null)
{
return "";
}
else if (!h2sReg.IsMatch(var0))
{
return var0;
}
else {
byte[] var1 = BigInteger.Parse(var0, System.Globalization.NumberStyles.HexNumber).ToByteArray();
byte[] var2 = new byte[var1.Length];
for (int var3 = 0; var3 < var1.Length; var3++)
{
var2[var3] = (byte)(var1[var3] - 4);
}
string var6 = BitConverter.ToString(var2);
try
{
var6 = HttpUtility.UrlDecode(var6, Encoding.GetEncoding("windows-1251"));
}
catch
{
var6 = var6.ToString();
}
return var6;
}
}
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
}Решение задачи: «Ошибка конвертирования string to int»
textual
Листинг программы
using System.Globalization;