sigBuf[0]=-45;
sigBuf[1]=7;一个int型是32位(还是16位?)吧?

解决方案 »

  1.   

    什么意思呢?我怀疑是否跟new String()有关?
    这种写法我在j2me开发环境中是对的,那时用的是jdk1.3。
    我现在不知道怎么回事?
      

  2.   

    分析一下你的程序:
    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 显示出来就是 ?没有这个编码的字符。
    分析如上祝你好运!
      

  3.   

    其实如果你想转换整形到16进制可以使用
    public static String toHexString(int i)
    另外我没太看懂楼主的意思,希望能够详细点说明祝你好运!
      

  4.   

    对不起,忘记告诉你是那个类的方法了
    java.lang.Integer 类下面的public static String toHexString(int i)方法可以把整形转换成16进制的字符串
      

  5.   

    to kknd97(绝地风暴):
       用toHexString(2003)的话,得到的是字符串7D3,可是占了三个字节,而我只允许两个字节长。
       规定的TCP包格式是这样的
    包头|正文(请求或响应) ,包内容的字节码顺序是低位在前的(intel习惯)
    包头格式为:
    TcpHead stucture{
        HeadSig:word;  //为常量2003,也就是0X7D3
    }
    假如有request="hi",则向服务器发送时,须打包成上述包格式,前面加上包头
      

  6.   

    to kknd97(绝地风暴):
        你的分析:
        String str=new String(sigBuf);//这时候你使用了默认的字符编码(win系统都是GBK)来生成你
    //的字符串,这时候你的str里面只有一个char=1111111111111101 也就是 xfffd
    byte[] byteTemp=str.getBytes()//这时候你的byteTemp数组只有一个byte=00111111 也就是为什么str里面只有一个char=1111111111111101 ?而byteTemp数组只有一个byte=00111111?这些不是很懂?顺带能不能介绍一下字符编码的知识。
        
      

  7.   

    问题解决如下,但是哪维可以介绍一下字节编码的知识。让我们学习学习!
    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);
      

  8.   

    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祝你好运!
      

  9.   

    给你个网址,去看看也许有帮助!http://www-900.ibm.com/developerWorks/cn/java/java_chinese/index.shtml祝你好运!