Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Pin加密4位数字到十六进制_Java_Encryption_Hex - Fatal编程技术网

Java Pin加密4位数字到十六进制

Java Pin加密4位数字到十六进制,java,encryption,hex,Java,Encryption,Hex,以下是程序必须遵循的步骤: 请求用户输入4位pin码。[完成] 将4位pin转换为十六进制。[?] 生成两个大于1000的随机数并转换为十六进制。[?] 将转换的pin夹在两个随机转换的数字之间。[可以做到] 到目前为止,我掌握的代码是: public static void main(String[] args) { int digit = 0; Scanner scan = new Scanner(System.in); System.out.println("Pl

以下是程序必须遵循的步骤:

  • 请求用户输入4位pin码。[完成]
  • 将4位pin转换为十六进制。[?]
  • 生成两个大于1000的随机数并转换为十六进制。[?]
  • 将转换的pin夹在两个随机转换的数字之间。[可以做到]
  • 到目前为止,我掌握的代码是:

    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); 
    }
    
    我目前需要帮助将pin转换为十六进制,生成两个大于1000的随机数,并将它们转换为十六进制。然而,我可以很容易地做三明治。在此之前,我试图寻找答案,但除了以下内容外,我什么也找不到:

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

    使用
    Integer.valueOf(string.valueOf(digital),16)
    进行转换。如果更改
    数字
    并使其成为
    字符串
    ,则无需执行
    字符串。value of(…)

    结果:

    In: 1234 
    Out(hex): 4660
    

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

    String Hexpin = Integer.toHexString(digit);
    
    要转换回整数,请使用:

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

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

    试试看,我认为这就是您所要求的。只是需要一个小补丁。希望有帮助

        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
    }
    

    //结果异常?
    -有什么异常?编辑:结果并不异常,只是再次测试,请忽略我之前的评论。如果您所做的只是用十六进制打印数字,最简单的方法是
    System.out.printf(“%x”,数字)。要“三明治”它:
    System.out.println(“%x%x%x”,前面,后面,数字)