String a="2";
byte[] buf=a.getBytes();
System.out.println(buf[0]);
能打印出2这个字符的整数值50,
那ASCⅡ 码表中的STX怎么表示呢
String a="STX";是不行的,变成了S T X三个字符了
byte[] buf=a.getBytes();
System.out.println(buf[0]);
能打印出2这个字符的整数值50,
那ASCⅡ 码表中的STX怎么表示呢
String a="STX";是不行的,变成了S T X三个字符了
电文长度----此项长度为2字节,用于指示一段完整电文的长度。它的传输格式为BCD。举例来说,它用‘0122‘表示电文长度为122Bytes。如果是用字符串传比如String a ="99";
表示电文99位,两个字节只能表示这么长啊,怎么表示100多
然后把这个byte数组发过去
[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你已经告诉我怎么以字符串表示了
byte[] buf=c.getBytes();
System.out.println(buf[0]);
这样只占用一个byte数组,一个字节
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]为低字节。
就这样
String a="STX";
for(int i=0;i<a.length();i++){
int num = (int)a.charAt(i);
System.out.println(num);
}
就OK了
char类型可以强制转换为ASCII