privateAsyncPacketPparseAPPacket(longutc,Stringsim,intapc,byte[]message,intlength,booleansetAlarm,Stringdesc)throwspiTransException{intpos=0;//时一个字节inthour=Integer.p...
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 / 60;
pos = pos + 5;
//跳过南北纬
//经度4字节
// if(message[pos]==0x80) 西经
tmp = toHexStr(message, pos, 4);
double lon = (double) Long.parseLong(tmp, 16) / 1000 / 60;
pos = pos + 5;
//跳过东西经
//速度 2个字节,单位:0.1公里/小时
int speed = Integer.parseInt(toHexStr(message, pos, 2), 16) / 10;
pos = pos + 2;
//角度 2个字节 0.1度
int heading = Integer.parseInt(toHexStr(message, pos, 2), 16) / 10;
pos = pos + 2;
//日一个字节
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++]));
ca.set(day, month - 1, 2000 + year);
nUtc = (int) ( (ca.getTime()).getTime() / 1000);
pos = pos + 5;
AsyncPacketP ap = new AsyncPacketP();
ap.commaddr = sim;
ap.utc = nUtc;
ap.valid = "有效";
ap.latitude = (int) (lat * 600000);
//Longitude(单位: 毫秒)
ap.longitude = (int) (lon * 600000);
//1海里=1852米-->km/h
ap.speed = speed;
//方向
ap.heading = heading;
ap.odesc = "正常";
ap.adesc = "正常";
ap.vdesc = "正常";
ap.ddesc = "正常";
ap.ostdesc = "正常";
ap.destid = -1;
ap.tflag = 0;
ap.vflag = 0;
ap.packtype = piConstant.APP_NORMAL;
return ap;
}
这是我现在的 结果得到的数据是30 33 35 32之类的16进制数
我想得到ASCII 就是0 3 5 2这样的 请问要在后面加什么语句?
我要得到的就是0x23 0x10 0x05 可是我现在得到的是32 33 31 30 30 35.。。。
呃 可能和我后面一段代码有关
public String toHexString(byte[] content, int len) {
String hexString = "";
for (int i = 0; i < len; i++) {
String temp = "";
temp = Integer.toHexString(content[i] & 0x000000ff);
if (temp.length() < 2) {
temp = "0" + temp;
}
temp += " ";
hexString += temp;
}
return hexString;
}
我不是很懂这个 可是把这段删了以后 上面的toHexString就没定义 通不过编译了- -还请高手帮帮忙
展开