引脚加密 4 位数字到十六进制



这些是程序必须遵循的步骤:

  1. 请求用户输入 4 位 PIN 码。[完成]
  2. 将 4 位数字引脚转换为十六进制。[?]
  3. 生成两个大于 1000 的随机数并转换为十六进制。[?]
  4. 将转换
  5. 后的引脚夹在两个随机转换的数字之间。[可以做到]

到目前为止,我拥有的代码是:

public static void main(String[] args) 
{
    int digit = 0;
    Scanner scan = new Scanner(System.in);
    System.out.println("Please enter a four digit pin:");
    digit = scan.nextInt(); // scanning for user input
    String Hexpin =Integer.toHexString(digit);
    System.out.println(Hexpin); 
}

我目前需要帮助将引脚转换为十六进制并生成两个大于 1000 的随机数并将它们转换为十六进制。但是,我可以轻松地做三明治。在此之前,我尝试寻找答案,但找不到任何其他内容:

C# 将整数转换为十六进制并再次转换回来

但是,本文将 int 转换为十六进制字符串而不是小数。

试一试,我想这就是你要的。只需要一个小修复。希望对您有所帮助!

    public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    System.out.println("Please enter a four digit pin:");
    int digit = scan.nextInt(); // scanning for user input as INT
    String hexDigit = Integer.toHexString(digit); //convert PIN to hex
    int one = ((int)(Math.random()+1000)*10000); //two randoms bw 1000 and 10000
    int two = ((int)(Math.random()+1000)*10000);
    String oneStr = Integer.toHexString(one); //convert to hex
    String twoStr = Integer.toHexString(two); //convert to hex
    System.out.println(oneStr + hexDigit + twoStr); //print concated
}

使用Integer.valueOf(String.valueOf(digit), 16)进行转换。如果您更改digit并使其String,则无需执行String.valueOf(...)

结果:

In: 1234 
Out(hex): 4660

要转换为十六进制,请使用:

String Hexpin = Integer.toHexString(digit);

要转换回整数使用:

int numberFromHex = Integer.parseInt(Hexpin, 16);

在代码注释中明确您所说的异常结果。

最新更新