如果有具体的代码实现就最好了。
实现public static String ReCalc(byte[] buffer1)方法,保证
if(text==text1) Console.WriteLine("ok");
就可以了
1
String text="5UYTSHZ0PL4Q3RB26FD";
2
byte[] mydata=new byte[12];
3
calc_1(text,mydata);
4
String text1=ReCalc(data);
5
if(text==text1) Console.WriteLine("ok");
6![](/Images/OutliningIndicators/None.gif)
7
//实现下面方法,满足上面条件
8
public static String ReCalc(byte[] buffer1){
9
return "";
10
}
11![](/Images/OutliningIndicators/None.gif)
12
public static void Calc(string text1, byte[] buffer1)
13
{
14
ushort num1 = 11;
15
uint num2 = 0;
16
uint num3 = 0;
17
int num4 = 0;
18
while ((num2 < buffer1.Length) && (num3 < 90))
19
{
20
uint num5 = CalcNum(text1[num4++]);
21
if (num5 == 0xffff)
22
{
23
throw new Exception("Error");
24
}
25
num5 = num5 << (num1 & 0x1f);
26
buffer1[num2] = Convert.ToByte(buffer1[num2] | ((num5 & 0xff00) >> 8));
27
buffer1[num2 + 1] = Convert.ToByte(buffer1[num2 + 1] | (num5 & 0xff));
28
if (num1 < 8)
29
{
30
num1 += 3;
31
num2++;
32
}
33
else
34
{
35
num1 -= 5;
36
}
37
num3 += 5;
38
}
39
}
40![](/Images/OutliningIndicators/None.gif)
41
public static uint CalcNum(char c){
42
String data="6HC3QBW9K2FUL8XJ4P0TN5DEAZ1YR7VG";
43
for(int i=0;i<data.Length;i++){
44
if(data[i]==c) return (uint)i;
45
}
46
return 0xffff;
47
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)