public class Test{
public static void main(String[] args) throws Exception {
String str = "啊";
int[] quweima = getQuweima(str);
for(int i : quweima) {
System.out.printf("%04d%n", i);
}
}
public static String convertDecimalToBinary ( int value){
return Integer.toHexString(value);
}
public static int[] getQuweima(String str) throws Exception {
byte[] b = str.getBytes("GB2312");
int[] quweima = new int[b.length / 2];
for(int i = 0, k = b.length / 2; i < k; i++) {
int m = ((b[2 * i] - 0xA0) & 0xff);
int n = (b[2 * i + 1] - 0xA0) & 0xff;
System.out.printf("%02d%n",convertDecimalToBinary(m));
System.out.printf("%02d%n",convertDecimalToBinary(n));
quweima[i] = (((b[2 * i] - 0xA0) & 0xff) * 100) + ((b[2 * i + 1] - 0xA0) & 0xff);
}
return quweima;
}
}想输出1001,即“啊”字区位码(1601)对应的16进制(1001H)
为什么调程序报错啊???
顺便问下 quweima[i] = (((b[2 * i] - 0xA0) & 0xff) * 100) + ((b[2 * i + 1] - 0xA0) & 0xff);他这个区位码是怎么算出来的,我怎么觉得他用的是整型数组,一位一位算出来的
谢谢
public static void main(String[] args) throws Exception {
String str = "啊";
int[] quweima = getQuweima(str);
for(int i : quweima) {
System.out.printf("%04d%n", i);
}
}
public static String convertDecimalToBinary ( int value){
return Integer.toHexString(value);
}
public static int[] getQuweima(String str) throws Exception {
byte[] b = str.getBytes("GB2312");
int[] quweima = new int[b.length / 2];
for(int i = 0, k = b.length / 2; i < k; i++) {
int m = ((b[2 * i] - 0xA0) & 0xff);
int n = (b[2 * i + 1] - 0xA0) & 0xff;
System.out.printf("%02d%n",convertDecimalToBinary(m));
System.out.printf("%02d%n",convertDecimalToBinary(n));
quweima[i] = (((b[2 * i] - 0xA0) & 0xff) * 100) + ((b[2 * i + 1] - 0xA0) & 0xff);
}
return quweima;
}
}想输出1001,即“啊”字区位码(1601)对应的16进制(1001H)
为什么调程序报错啊???
顺便问下 quweima[i] = (((b[2 * i] - 0xA0) & 0xff) * 100) + ((b[2 * i + 1] - 0xA0) & 0xff);他这个区位码是怎么算出来的,我怎么觉得他用的是整型数组,一位一位算出来的
谢谢
public static void main(String[] args) throws Exception {
String str = "啊";
int[] quweima = getQuweima(str);
for(int i : quweima) {
System.out.printf("%04d%n", i);
}
} public static int[] getQuweima(String str) throws Exception {
byte[] b = str.getBytes("GB2312");
int[] quweima = new int[b.length / 2];
for(int i = 0, k = b.length / 2; i < k; i++) {
int m = ((b[2 * i] - 0xA0) & 0xff);
int n = (b[2 * i + 1] - 0xA0) & 0xff;
System.out.printf("%02x%n",m);
System.out.printf("%02x%n",n);
quweima[i] = (((b[2 * i] - 0xA0) & 0xff) * 100) + ((b[2 * i + 1] - 0xA0) & 0xff);
}
return quweima;
}
}
%02d%n d代表的是十进制
%02x%n x代表的是16进制,输出的是16进制
我就是想问怎么在16进制前面加0X,我查了是加#,但是加的位置是在02后,这样的话01输出就是0x1,而不是0x01了,求解