Java 怎么表示字符STX

大志哥123 2007-12-10 10:25:49
String a="2";
byte[] buf=a.getBytes();
System.out.println(buf[0]);
能打印出2这个字符的整数值50,


那ASCⅡ 码表中的STX怎么表示呢
String a="STX";是不行的,变成了S T X三个字符了
...全文
871 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
报文都是二进制流,不会使用String的。
  • 打赏
  • 举报
回复
或者使用一个char来表示,一个char就是占两个字节的,范围在0~65535之间,可以表示65536个数字。

比如:100个长度,就是char c = 100;
  • 打赏
  • 举报
回复
不用String,用byte啊,一个byte可以表示256个数据,两个byte(即两个字节),可以表示65536个数据。
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
谢了,再问下
电文长度----此项长度为2字节,用于指示一段完整电文的长度。它的传输格式为BCD。举例来说,它用‘0122‘表示电文长度为122Bytes。

如果是用字符串传比如String a ="99";
表示电文99位,两个字节只能表示这么长啊,怎么表示100多
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
不能用String a=""???
  • 打赏
  • 举报
回复 1
char c = '\u0002';
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
victoryzll 2007-12-10
  • 打赏
  • 举报
回复
简单的很哦
就这样
String a="STX";

for(int i=0;i<a.length();i++){
int num = (int)a.charAt(i);
System.out.println(num);
}
就OK了
char类型可以强制转换为ASCII
  • 打赏
  • 举报
回复
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]为低字节。
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
0112,怎么用两个byte表示啊??
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
String c="\u0003";//用来表示ETX字符
byte[] buf=c.getBytes();
System.out.println(buf[0]);
这样只占用一个byte数组,一个字节
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
起始位 电文长度 交易数据 停止位 校验和
[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来实现了。

还有,那个报文的具体格式是什么?STX,长度,报文内容等等具体是怎么安排的?
大志哥123 2007-12-10
  • 打赏
  • 举报
回复
我以前都是用String拼出了报文 ,然后一起byte[] buf=a.getBytes();
然后把这个byte数组发过去

62,636

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧