[英]Java Integer.ValueOf method equivalence in C# With Radix Parameter
My task is to migrate this Java code to a C# version, but I'm having trouble with the ValueOf
method, since I can't seem to find a equivalent version for C# (because of the Radix
parameter used on Java, 16 in this case). 我的任务是将这个Java代码迁移到C#版本,但我遇到了ValueOf
方法的问题,因为我似乎无法找到C#的等效版本(因为Java上使用的Radix
参数,16案件)。
public String decrypt_string(String s)
{
String s1 = "";
int i = s.length() / 2;
int[] ai = new int[i];
for (int j = 0; j < i; j++)
{
// This is the "problematic" line \/
ai[j] = Integer.valueOf(s.substring(j * 2, j * 2 + 2), 16).intValue();
}
int[] ai1 = decrypt_block(ai, i);
for (int k = 0; k < i; k++)
{
if (ai1[k] != 0)
s1 = s1 + (char)ai1[k];
}
return s1;
} }
Here is my try, but it failed: 这是我的尝试,但它失败了:
public String decrypt_string(String s)
{
String s1 = "";
int i = s.Length / 2;
int[] ai = new int[i];
for (int j = 0; j < i; j++)
{
int startIndex = j * 2;
string tmp = s.Substring(startIndex, 2);
ai[j] = Int32.Parse (tmp);
}
int[] ai1 = decrypt_block(ai, i);
for (int k = 0; k < i; k++)
{
if (ai1[k] != 0)
s1 = s1 + (char)ai1[k];
}
return s1;
}
Thanks in advance 提前致谢
如果您尝试解析十六进制(base-16)数字,请使用:
int.Parse (tmp, NumberStyles.HexNumber);
You need to convert a string to an integer, given that the string is in a specific base. 您需要将字符串转换为整数,前提是该字符串位于特定的基础中。
int i = Convert.ToInt32(str, 16);
int j = Convert.ToInt32("A", 16); // 10
So: 所以:
for (int j = 0; j < i; j++)
{
int startIndex = j * 2;
ai[j] = Convert.ToInt32(s.Substring(startIndex, 2));
}
基数在Integer.valueOf()上,而不是你在那里显示的java代码中的s.substring(),所以这将成为:
ai[j] = Int32.Parse(s.Substring(j * 2, j * 2 + 2), 16);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.