to sky99ray(溪中石): char=1111111111111101 //java语言里面char类型,是一个16为长的类型,这表示这个char类型的内部结构,用2进制表示的。 给你写一个程序片,看看对你是否有帮助: public class tmp{ public static void main(String[] args){ int year=2003; int high=year,low=year; high >>>= 8; low=low&0xff; String s_high="",s_low=""; s_high=Integer.toHexString(high); s_low=Integer.toHexString(low); System.out.println(s_high); System.out.println(s_low); } } 输出结果如下: C:\>javac tmp.javaC:\>java tmp 7 d3祝你好运!
这种写法我在j2me开发环境中是对的,那时用的是jdk1.3。
我现在不知道怎么回事?
byte[] sigBuf=new byte[2];
sigBuf[0]=-45;//这时你的sigBug[0]=11010011 也就是 xd3
sigBuf[1]=7;//这时你的sigBug[0]=00000111 也就是 x07
String str=new String(sigBuf);//这时候你使用了默认的字符编码(win系统都是GBK)来生成你
//的字符串,这时候你的str里面只有一个char=1111111111111101 也就是 xfffd
byte[] byteTemp=str.getBytes()//这时候你的byteTemp数组只有一个byte=00111111 也就是
// x3f 显示出来就是 ?没有这个编码的字符。
分析如上祝你好运!
public static String toHexString(int i)
另外我没太看懂楼主的意思,希望能够详细点说明祝你好运!
java.lang.Integer 类下面的public static String toHexString(int i)方法可以把整形转换成16进制的字符串
用toHexString(2003)的话,得到的是字符串7D3,可是占了三个字节,而我只允许两个字节长。
规定的TCP包格式是这样的
包头|正文(请求或响应) ,包内容的字节码顺序是低位在前的(intel习惯)
包头格式为:
TcpHead stucture{
HeadSig:word; //为常量2003,也就是0X7D3
}
假如有request="hi",则向服务器发送时,须打包成上述包格式,前面加上包头
你的分析:
String str=new String(sigBuf);//这时候你使用了默认的字符编码(win系统都是GBK)来生成你
//的字符串,这时候你的str里面只有一个char=1111111111111101 也就是 xfffd
byte[] byteTemp=str.getBytes()//这时候你的byteTemp数组只有一个byte=00111111 也就是为什么str里面只有一个char=1111111111111101 ?而byteTemp数组只有一个byte=00111111?这些不是很懂?顺带能不能介绍一下字符编码的知识。
byte[] sigBuf=new byte[2];
sigBuf[0]=-45;
sigBuf[1]=7;
String str=new String(sigBuf,"ISO-8859-1");//指定字符集
System.out.println("str: "+str);
byte[] byteTemp=str.getBytes("ISO-8859-1");//指定字符集
for(int i=0;i<byteTemp.length;i++)
System.out.println(i+": "+byteTemp[i]);
String request="hi";
String result=request.concat(str);
char=1111111111111101 //java语言里面char类型,是一个16为长的类型,这表示这个char类型的内部结构,用2进制表示的。
给你写一个程序片,看看对你是否有帮助:
public class tmp{
public static void main(String[] args){
int year=2003;
int high=year,low=year;
high >>>= 8;
low=low&0xff;
String s_high="",s_low="";
s_high=Integer.toHexString(high);
s_low=Integer.toHexString(low);
System.out.println(s_high);
System.out.println(s_low);
}
}
输出结果如下:
C:\>javac tmp.javaC:\>java tmp
7
d3祝你好运!