如何在 java Android 中编程以 16 为底的 Xor 计算器?
How to programming Xor calculator hex base 16 in java Android?
如何在 Java 中编写十六进制(基数 16)的 Xor 计算器,如下面的屏幕截图所示?第一个输入是键,第二个输入是字符串,第三个是输出。实际上,我尝试了很多脚本并用谷歌搜索了这个问题,但结果并没有像这个计算器那样实现。请帮忙。
Online Xor Calculator
和
Windows programmer mode calculator
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView sharecode = (ImageView) findViewById(R.id.sharecode);
final TextView finalcode = (TextView) findViewById(R.id.tvfinalcode);
final Button calculatcode = (Button) findViewById(R.id.btncalculatcode);
final EditText tbpin = (EditText) findViewById(R.id.etPin);
final EditText tbappcode = (EditText) findViewById(R.id.etappcode);
tbappcode.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
sharecode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (finalcode.getText().equals("")) {
Toast.makeText(MainActivity.this, "There is no code to share it!", Toast.LENGTH_LONG).show();
} else {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Application Code is:" + finalcode.toString());
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
}
});
calculatcode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (tbpin.getText().toString().equals("")) {
Toast.makeText(MainActivity.this, "Please Enter PIN Code!", Toast.LENGTH_LONG).show();
} else if (tbappcode.getText().toString().equals("")) {
Toast.makeText(MainActivity.this, "Please Enter Last part of Appcode Code!", Toast.LENGTH_LONG).show();
} else {
String a = tbappcode.getText().toString();
String b = tbpin.getText().toString();
int[] encrypted = encrypt(a, b);
for (int i = 0; i < encrypted.length; i++)
finalcode.setText(decrypt(encrypted, b));
}
}
}
);
}
private static int[] encrypt(String str, String key) {
int[] output = new int[str.length()];
for (int i = 0; i < str.length(); i++) {
int o = (Integer.valueOf(str.charAt(i)) ^ Integer.valueOf(key.charAt(i % (key.length() - 1)))) + '0';
output[i] = o;
}
return output;
}
private static String decrypt(int[] input, String key) {
String output = "";
for (int i = 0; i < input.length; i++) {
output += (char) ((input[i] - 48) ^ (int) key.charAt(i % (key.length() - 1)));
}
return output;
}
请看下面的计算。
public static void main(String[] args) throws FileNotFoundException {
int i = 0x316AB2CB;
int j = 0x19421942;
int res = i^j;
System.out.printf("Hex: %x\n", res);
System.out.printf("Octal: %o\n", res);
System.out.printf("Decimal: %d\n", res);
}
您可能会看一看 Formatter,因为您可能并不总是对打印结果感兴趣。
您必须将 String 拆分为 int 或 long 数字。
当我们有 16base 数字时,我们必须将此数字更改为 2base。
例如(在你的照片中):
第一个输入的最后一个数字是 2,第二个输入的最后一个数字是 b.
2 二进制 - 0010
b 二进制 - 1011
Xor 的结果(如果 firstInput=!secondInput)1001,这是 9。如图所示。
所以你必须拆分你的字符串,得到一个数字,将其转换为 16base 数字,用第二个字符串执行此操作并使用 XOR 二元运算符 ^.
int[] firstInput ={1,9,4,2,1,9,4,2};
int[] secondInput ={3,1,6,a,b,2,c,b};
int[] output = new int[8];
for(i=0;i<firstInput.length();i++){
output[i]=firstInput[i]^secondInput[i];
}
这只是代码示例,非常简单和部分。
XoR 的运算是 ^ 运算符。
如何在 Java 中编写十六进制(基数 16)的 Xor 计算器,如下面的屏幕截图所示?第一个输入是键,第二个输入是字符串,第三个是输出。实际上,我尝试了很多脚本并用谷歌搜索了这个问题,但结果并没有像这个计算器那样实现。请帮忙。 Online Xor Calculator 和 Windows programmer mode calculator
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView sharecode = (ImageView) findViewById(R.id.sharecode);
final TextView finalcode = (TextView) findViewById(R.id.tvfinalcode);
final Button calculatcode = (Button) findViewById(R.id.btncalculatcode);
final EditText tbpin = (EditText) findViewById(R.id.etPin);
final EditText tbappcode = (EditText) findViewById(R.id.etappcode);
tbappcode.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
sharecode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (finalcode.getText().equals("")) {
Toast.makeText(MainActivity.this, "There is no code to share it!", Toast.LENGTH_LONG).show();
} else {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Application Code is:" + finalcode.toString());
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
}
});
calculatcode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (tbpin.getText().toString().equals("")) {
Toast.makeText(MainActivity.this, "Please Enter PIN Code!", Toast.LENGTH_LONG).show();
} else if (tbappcode.getText().toString().equals("")) {
Toast.makeText(MainActivity.this, "Please Enter Last part of Appcode Code!", Toast.LENGTH_LONG).show();
} else {
String a = tbappcode.getText().toString();
String b = tbpin.getText().toString();
int[] encrypted = encrypt(a, b);
for (int i = 0; i < encrypted.length; i++)
finalcode.setText(decrypt(encrypted, b));
}
}
}
);
}
private static int[] encrypt(String str, String key) {
int[] output = new int[str.length()];
for (int i = 0; i < str.length(); i++) {
int o = (Integer.valueOf(str.charAt(i)) ^ Integer.valueOf(key.charAt(i % (key.length() - 1)))) + '0';
output[i] = o;
}
return output;
}
private static String decrypt(int[] input, String key) {
String output = "";
for (int i = 0; i < input.length; i++) {
output += (char) ((input[i] - 48) ^ (int) key.charAt(i % (key.length() - 1)));
}
return output;
}
请看下面的计算。
public static void main(String[] args) throws FileNotFoundException {
int i = 0x316AB2CB;
int j = 0x19421942;
int res = i^j;
System.out.printf("Hex: %x\n", res);
System.out.printf("Octal: %o\n", res);
System.out.printf("Decimal: %d\n", res);
}
您可能会看一看 Formatter,因为您可能并不总是对打印结果感兴趣。
您必须将 String 拆分为 int 或 long 数字。 当我们有 16base 数字时,我们必须将此数字更改为 2base。 例如(在你的照片中): 第一个输入的最后一个数字是 2,第二个输入的最后一个数字是 b.
2 二进制 - 0010
b 二进制 - 1011
Xor 的结果(如果 firstInput=!secondInput)1001,这是 9。如图所示。
所以你必须拆分你的字符串,得到一个数字,将其转换为 16base 数字,用第二个字符串执行此操作并使用 XOR 二元运算符 ^.
int[] firstInput ={1,9,4,2,1,9,4,2};
int[] secondInput ={3,1,6,a,b,2,c,b};
int[] output = new int[8];
for(i=0;i<firstInput.length();i++){
output[i]=firstInput[i]^secondInput[i];
}
这只是代码示例,非常简单和部分。 XoR 的运算是 ^ 运算符。