因为学完DES的c语言实现,需要进行DES的Java实现,看了网上很多有关进制转换的代码,都不符合我的想法,所以就自己重写了一下,以防以后代码丢失,小记一下。
1 import java.util.Scanner;
2 /**
3 * @author :cjc
4 * @date : 2022/7/23
5 */
6 public class helloword {
7 public static void main(String[] args) {
8 int m[] = new int[64];
9 Scanner in = new Scanner(System.in);
10 System.out.print("请输入16进制的明文:");
11 String kk = new String();
12 kk = in.next();
13 int len = kk.length();
14 while (len != 16) {
15 System.out.print("请重新输入16进制的明文:");
16 kk = new String();
17 kk = in.next();
18 len = kk.length();
19 }
20 char[] kk1 = kk.toCharArray();
21 int j = 0;
22 for (int i = 0; i < 16; i++) {
23 int a;
24 if (kk1[i] >= '0' && kk1[i] <= '9')
25 a = kk1[i] - '0';
26 else
27 a = kk1[i] - 'a' + 10;
28 int n[] = new int[4];
29 int f = 0;
30 while (a != 0) {
31 n[f] = a % 2;
32 a = a / 2;
33 f++;
34 }
35 m[j * 4] = n[3];
36 m[j * 4 + 1] = n[2];
37 m[j * 4 + 2] = n[1];
38 m[j * 4 + 3] = n[0];
39 j++;
40 }
41 System.out.print("二进制为:");
42 for (int i = 0; i < 64; i++) {
43 if (i % 64 == 0) System.out.println();
44 System.out.print(m[i]);
45
46 }
47 }
48 }