Java 字母的XOR十六进制ascii值
我正试图完成一些家庭作业,却完全被难倒了。我需要执行的函数是,给定字符的十六进制值,将其与另一个十六进制值异或,以验证已知的结束值 举一个简单的例子(给我的那个),我知道‘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函数还能怎么做。有人能解释一下吗 提前谢谢 我试过了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函数还能怎么做。有人能解释一下吗 提前谢谢 我试
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