String a="2";
byte[] buf=a.getBytes();
        System.out.println(buf[0]);
能打印出2这个字符的整数值50,
那ASCⅡ 码表中的STX怎么表示呢
String a="STX";是不行的,变成了S T X三个字符了

解决方案 »

  1.   

    谢了,再问下
    电文长度----此项长度为2字节,用于指示一段完整电文的长度。它的传输格式为BCD。举例来说,它用‘0122‘表示电文长度为122Bytes。如果是用字符串传比如String a ="99";
    表示电文99位,两个字节只能表示这么长啊,怎么表示100多
      

  2.   

    不用String,用byte啊,一个byte可以表示256个数据,两个byte(即两个字节),可以表示65536个数据。
      

  3.   

    或者使用一个char来表示,一个char就是占两个字节的,范围在0~65535之间,可以表示65536个数字。比如:100个长度,就是char c = 100;
      

  4.   

    报文都是二进制流,不会使用String的。
      

  5.   

    我以前都是用String拼出了报文 ,然后一起byte[]   buf=a.getBytes(); 
    然后把这个byte数组发过去
      

  6.   

    那当然也可以啦,最终还是通过二进制发送的不是吗?这样报文长度,只能通过两个byte来实现了。还有,那个报文的具体格式是什么?STX,长度,报文内容等等具体是怎么安排的?
      

  7.   

    起始位 电文长度 交易数据 停止位 校验和
      [1]        [2]           [3]            [4]          [5] 1.2 格式的说明
       [1]:起始位------用以同步自助终端-支付平台间通讯的数据位。一般定为’02’。
       [2]:电文长度----此项长度为2字节,用于指示一段完整电文的长度。它的传输格式为BCD。举例来说,它用‘0122‘表示电文长度为122Bytes。注意此长度不含它本身的2字节,不含起始位1字节,不含停止位1字节,不含校验和1字节。因此它的值为整个完整电文长度减5。
       [3]:交易数据------涉及应用的具体数据,交易数据由公共部分和私有部分组成;数据的具体组织方式见“交易数据的公共部分”和“交易数据的私有部分”。
       [5]:停止位--------对应起始位。一般定位’03’。
       [6]:校验和--------用以确保自助终端-支付平台间电文正确传输的手段。计算校验和时不包含起始位和停止位。
    我的交易数据原来都是StringBuffer s=....
    s.append().append()....;//所有数据都是在这里用字符串先组合的。
    s.toString().getBytes();
    byte buf=new byte[4097];
    buf=s.toString().getBytes();
    然后
    sock.netSend(data.getBytes(), time)现在长度那个用2位字符串我不会表示,STX你已经告诉我怎么以字符串表示了
      

  8.   

    String c="\u0003";//用来表示ETX字符
    byte[] buf=c.getBytes();
    System.out.println(buf[0]);
    这样只占用一个byte数组,一个字节
      

  9.   

    0112,怎么用两个byte表示啊??
      

  10.   

    public class Test {
        
        public static void main(String[] args) {
            int k = 112;
            byte[] b = toBytes(k);
            System.out.println(toInt(b));
        }
        
        private static byte[] toBytes(int num) {
            byte[] bytes = new byte[2];
            bytes[0] = (byte)((num & 0xff00) >> 8);
            bytes[1] = (byte)(num & 0xff);
            return bytes;
        }
        
        private static int toInt(byte[] bytes) {
            return (bytes[0] << 8) | bytes[1];
        }
    }byte[0]为高字节,byte[1]为低字节。
      

  11.   

    简单的很哦
    就这样
    String   a="STX";

    for(int i=0;i<a.length();i++){
      int num = (int)a.charAt(i);
      System.out.println(num);
    }
    就OK了
    char类型可以强制转换为ASCII