Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 字母的XOR十六进制ascii值_Java_Math_Cryptography - Fatal编程技术网

Java 字母的XOR十六进制ascii值

Java 字母的XOR十六进制ascii值,java,math,cryptography,Java,Math,Cryptography,我正试图完成一些家庭作业,却完全被难倒了。我需要执行的函数是,给定字符的十六进制值,将其与另一个十六进制值异或,以验证已知的结束值 举一个简单的例子(给我的那个),我知道‘Bob’的ascii值是[42,6F,62],而‘Eve’是[45,76,65]。我必须将“Bob”的值与[07,16,17]异或,才能得到“Eve” 我认为xor只是简单的模基加法,但只是使用微软的计算器:(42+45)mod 16=3,但42 xor 45=7。我不明白XOR函数还能怎么做。有人能解释一下吗 提前谢谢 我试

我正试图完成一些家庭作业,却完全被难倒了。我需要执行的函数是,给定字符的十六进制值,将其与另一个十六进制值异或,以验证已知的结束值

举一个简单的例子(给我的那个),我知道‘Bob’的ascii值是[42,6F,62],而‘Eve’是[45,76,65]。我必须将“Bob”的值与[07,16,17]异或,才能得到“Eve”

我认为xor只是简单的模基加法,但只是使用微软的计算器:(42+45)mod 16=3,但42 xor 45=7。我不明白XOR函数还能怎么做。有人能解释一下吗

提前谢谢

我试过了

float l = (6F)^(16);
System.out.println(l);
得到了这个例外:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - bad operand types for binary operator '^'
  first type:  float
  second type: double
    at p2p_example.P2P_Example.main(P2P_Example.java:40)
Java Result: 1

XOR是位异或

42 = 1000010
45 = 1000101

如果两个位中有一个(并且只有一个)是XORd,则为1。例如,对于Java,您可以使用并传入基数

public static void main(String[] args) {
    int a = Integer.parseInt("42", 16);
    int b = Integer.parseInt("45", 16);
    System.out.println(Integer.toString(a ^ b, 16));
}
印刷品

7

我认为您可能会混淆十六进制和十进制(尽管(42+45)%16也恰好是十进制中的7;所以可能您只是在做错误的数学运算?

所以最好将其转换为二进制以进行异或运算。我主要使用Java,如何使用Java实现二进制(或十六进制)xor函数?据我所知,Java的数字系统只适用于base 10XOR,无论base是什么,都是一样的。无论数字如何表示,它们都具有相同的值。没有所谓的“二进制异或”函数。@yazan我编辑了我的答案以包含Java代码;如果你一开始就用Java标记了你的问题,我早就发布了。Int到Int。。。你从哪里得到双重和浮动?我不知道如何在评论中添加行空格。我将编辑原始帖子
7
0x42 + 0x45 = 0x87
            = 135

135 % 16 = 7 = 0x07