Java中把一个数组中的全部数字改为ASCII要怎么写

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:03:02
private AsyncPacketP parseAPPacket(long utc, String sim, int apc,
byte[] message,
int length, boolean setAlarm, String desc) throws
piTransException {

int pos = 0;

//时一个字节
int hour = Integer.parseInt(Integer.toHexString(message[pos++]));
//分一个字节
int minit = Integer.parseInt(Integer.toHexString(message[pos++]));
//秒一个字节
int second = Integer.parseInt(Integer.toHexString(message[pos++]));
Calendar ca = Calendar.getInstance();
ca.set(hour, minit, second);
ca.add(Calendar.HOUR,8);
int nUtc = (int) ( (ca.getTime()).getTime() / 1000);

pos = pos + 3;
//跳过毫秒和正确验证

String tmp = "";

//纬度4字节
// if(message[pos]==0x80) 南纬
tmp = toHexStr(message, pos, 4);
double lat = (double) Long.parseLong(tmp, 16) / 1000

你接收到的数据应该是BCD格式的日期时间吧,你现在的转换方式是对的阿,toHexString,
你想要的是什么结果阿?

原始数据可能是:
0x23 0x10 0x05
就是23点10分05秒,
你的结果hour = 23, mini= 10, second = 5没问题啊?

//日一个字节
int day = Integer.parseInt(Integer.toHexString(message[pos++]));
//月1个字节
int month = Integer.parseInt(Integer.toHexString(message[pos++]));
//年1个字节
int year = Integer.parseInt(Integer.toHexString(message[pos++]));
这一段处理都没问题啊。

你想要的输出在哪里啊?

你的函数toHexString在前面没有调用阿,只有一个toHexStr的调用。