需求:将一串十六进制字符串,弄成十进制
1.截取特定位数的字符串,比如去除 前面的标识符和后面的校验码,只需要中间部分
2.拿到十六进制字符串
3.将十六进制字符串转成byte 字节数组
4.调换字节数组的顺序,
4.将新字节数组转成十进制字符串
例如:
原始字符串是:017CC411F700000000
去除无效标识符和校验码后,得到的字符串:7CC411F7
转成字符数组: 7C,C4,11,F7
调换顺序: F7 ,11, C4 ,7C
将 F711C47C 转成十进制字符串:4145136764
为什么要搞那么复杂呢?
因为我在弄一个读卡的需求,读出来的就是一串十六进制字符串,然后我们的卡号是十进制的一串,必须要把十六进制转成十进制,然后去我们的数据库里面,根据卡号,比对,查询信息,得到卡号对应的人员信息
package com.example.iosdialogdemo;
import static java.util.Collections.reverse;
import android.os.Bundle;
import android.util.Log;
import com.example.iosdialogdemo.utils.DataChangeUtils;
import androidx.appcompat.app.AppCompatActivity;
import com.example.iosdialogdemo.utils.DataConversion;
import com.example.iosdialogdemo.utils.MyFunc;
import com.example.iosdialogdemo.utils.HexUtil;
import com.example.iosdialogdemo.utils.DataChangeUtils;
import java.util.Arrays;
public class TwoActivity extends AppCompatActivity {
private String code1 = "ECD8FCF6";
private String code2 = "7CC411F7";
private String code3 = "01ECD8FCF600000000";
private String code4 = "017CC411F700000000";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
/*
* 0 - 1 两位byte 代表读卡和卡离开的字段
* 2-9 代表卡号
*10-17 代表校验码
* EC D8 FC F6 4143765740
* 7C C4 11 F7 4145136764
* * */
/*
String code3 = DataChangeUtils.createHex(code1);
String byteArrToHex = MyFunc.ByteArrToHex(null);
Log.e("TAG", ""+code5);
需要做什么呢 ?
30 48
十六进制转十进制可以了、
接下来是拆分数组 然后 调换位置
00 7C C4 11 F7 00 00 00 00
调换可以了 接下来 就是转十进制
*/
/// bytesToHex( hexTobytes(code1));
String str = code3.substring(2, 9);
long a = DataConversion.hexToDec("30");
byte[] b = DataConversion.decodeHexString(code1);
int[] array = {
7, 8, 9, 10, 11};
Log.e("Array : ", Arrays.toString(array)); // print array
// Call function to get reversed array
int[] reversedArray = reverse(array);
byte[] reversedArray2 = reverse2(b);
Log.e("Reversed array : ", Arrays.toString(reversedArray));
Log.e("Reversed array_two : ", Arrays.toString(b));
Log.e("Reversed array_two : ", Arrays.toString(reversedArray2));
String coede6= DataConversion.encodeHexString(reversedArray2);
long codessss= DataConversion.hexToDec(coede6);
Log.e("TAG", "" + a +"====="+coede6+"==???==="+codessss+"------------"+str); // F6FCD8EC
}
static int[] reverse(int[] array) {
int[] newArray = new int[array.length];
for


2148

被折叠的 条评论
为什么被折叠?



