ChkSum(int len, char* buf, char* res)
{
int i;
memset(res, 0, 8);
for(i=0; i<len; i+=4)
{
res[0]^=(buf+i)[0];
res[1]^=(buf+i)[1];
res[2]^=(buf+i)[2];
res[3]^=(buf+i)[3];
}; res[0]=~res[0];
res[1]=~res[1];
res[2]=~res[2];
res[3]=~res[3]; // 将16进制数扩展为对应字符串(如0xE8--->"E8")
for(i = MSG_CHKSUM_LEN-1; i >= 0; i --)
{
if ( i % 2 ) // LOW
{
res[i] = (res[i/2] & 0x0F) + '0';
if ( res[i] > '9' )
{
res[i] = res[i] + 'A' - '0' - 10;
}
}
else // HIGH
{
res[i] = ((res[i/2] >> 4) & 0x0F) + '0';
if ( res[i] > '9' )
{
res[i] = res[i] + 'A' - '0' - 10;
}
}
}
}
转完验证后,立即结帖!
{
int i;
memset(res, 0, 8);
for(i=0; i<len; i+=4)
{
res[0]^=(buf+i)[0];
res[1]^=(buf+i)[1];
res[2]^=(buf+i)[2];
res[3]^=(buf+i)[3];
}; res[0]=~res[0];
res[1]=~res[1];
res[2]=~res[2];
res[3]=~res[3]; // 将16进制数扩展为对应字符串(如0xE8--->"E8")
for(i = MSG_CHKSUM_LEN-1; i >= 0; i --)
{
if ( i % 2 ) // LOW
{
res[i] = (res[i/2] & 0x0F) + '0';
if ( res[i] > '9' )
{
res[i] = res[i] + 'A' - '0' - 10;
}
}
else // HIGH
{
res[i] = ((res[i/2] >> 4) & 0x0F) + '0';
if ( res[i] > '9' )
{
res[i] = res[i] + 'A' - '0' - 10;
}
}
}
}
转完验证后,立即结帖!
解决方案 »
- 程序不知道如何写下去……有问题呀……
- 一个DAO,能编译通过,但是就是执行不了,希望大家能帮我看看
- 懂jni的帮帮忙,遇到难题了..
- 【SOS】字符集问题
- 接口的好处???????
- dwr配置多个class????
- 为什么我的servlet加了filter就连相应的目录启动不了啊
- Swing菜单问题,请帮忙
- 问个oracle方面很简单的问题,使用enterprise manager里面的console原始管理院用户名和口令是什么还有managerment server里面怎么设置?
- JAVA中new String[0] 和 new String[1]是怎么分配内存的?
- 谁能帮我解决这个奇怪的问题
- 紧急!~请教高手
public void computeCheckSum(byte[] arr) {
System.out.println("checksum string=" + new String(arr));
byte[] b = arr;
byte[] res = new byte[4];
for (int i = 0; i < b.length; i += 4) {
res[0] ^= b[i];
res[1] ^= b[i + 1];
res[2] ^= b[i + 2];
res[3] ^= b[i + 3];
}
res[0] = (byte) ~res[0];
res[1] = (byte) ~res[1];
res[2] = (byte) ~res[2];
res[3] = (byte) ~res[3];
for (int i = 0; i < 4; i++) {
System.out.print(byte2hex(res[i])+"--");
}
}
public static String byte2hex(byte b) {
StringBuffer buf = new StringBuffer();
char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
int high = ((b & 0xf0) >> 4);
int low = (b & 0x0f);
buf.append(hexChars[high]);
buf.append(hexChars[low]);
return buf.toString();
}