C语言中:[code]
#include <stdio.h>
#include <stdlib.h>int main()
{
unsigned char ss[5] = "1234"; ss[0] = 0x31;
ss[1] = 0x32;
ss[2] = 0x33;
ss[3] = 0x34;
fprintf(stderr, "%d|%x%x%x%x", atoi(ss), ss[0], ss[1], ss[2], ss[3]);
}
[/code]atoi的结果是1234java 中:
String str = "31323334";
System.out.println(Integer.parseInt(str, 16));
结果是:825373492这是为什么呢?
#include <stdio.h>
#include <stdlib.h>int main()
{
unsigned char ss[5] = "1234"; ss[0] = 0x31;
ss[1] = 0x32;
ss[2] = 0x33;
ss[3] = 0x34;
fprintf(stderr, "%d|%x%x%x%x", atoi(ss), ss[0], ss[1], ss[2], ss[3]);
}
[/code]atoi的结果是1234java 中:
String str = "31323334";
System.out.println(Integer.parseInt(str, 16));
结果是:825373492这是为什么呢?
int temp = 0;
int res = 0;
for (int i = 0; i < 4; i++) {
res <<= 8;
temp = b[i]&0x000000FF;
res |= temp;
}
return res;
} 但这个方法我试了也不行。就是调用bytesToInt(str.getBytes())这样
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte)(toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}bytesToInt(hexStringToBytes(str))
{
unsigned char ss[5] = "1234"; ss[0] = 0x31;
ss[1] = 0x32;
ss[2] = 0x33;
ss[3] = 0x34;
fprintf(stderr, "%d|%x%x%x%x", atoi(ss), ss[0], ss[1], ss[2], ss[3]);
}前面漏掉了
String s = "1234";
Integer i = Integer.valueOf(s);
char[] c = s.toCharArray();
System.out.printf("%d|%x%x%x%x", i, (int)c[0], (int)c[1], (int)c[2], (int)c[3]);
lz你在C里面 char[] ss = "31323334";
然后调用 atoi(ss),能出来1234 ?String s = "31323334";
int r = 0;
for (int i=0; i<s.length(); i+=2) {
System.out.println(s.substring(i,i+2));
r = r*10 + Integer.valueOf(s.substring(i,i+2), 16).intValue() - (int)'0';
}
System.out.println(r);