字符串如下:String msg = "445 0060 操作成功! 400161";
byte[] bytes = s.getBytes();
如从bytes的0位开始截取,往后截10位因为:
445 (包含空格)如从bytes的17位开始截取,往后截60位因为:
操作成功! (包含空格,一个汉字占两个字节)如从bytes的17位开始截取,往后截61位因为:
操作成功! 4(包含空格,一个汉字占两个字节)
解决方案 »
- JMX问题请教:
- java替换字符
- for循环
- 一个递归的题
- 大家帮我看看啊~Tomcat
- 把Ball类保存在自己的文件中(名为Ball.java),并且和BallWorld类连接在一起,来创建可执行程序。看看我的源程序
- 【哪个类实现了 TableCellEditor 接口?】
- 烦了几天的内部窗体问题
- 哪有jdk1.4.1的api文档下载(在线等待)高分
- 关于JBuilder中一个简单的运行问题。我很着急,在线等待中……
- 使用JFreeChart制作图表,但是鼠标移动屏幕就闪一下,public void update(Graphics g){paint(g)}不能消除求高手指教
- java的反编译问题
public byte[] subBytes(byte[] src, int begin, int count) {
byte[] bs = new byte[count];
for (int i=begin; i<begin+count; i++) bs[i-begin] = src[i];
return bs;
}
String msg = "445 0060 操作成功! 400161";
byte[] bytes = s.getBytes();
byte[] newBytes = subBytes(bytes,17,60);
我的意思是,将String转换为byte数组后。
让后再取数组中的某段的数据,字符串中有中文,转换为byte后一个中文占两个字节。
String msg = "445 0060 操作成功! 400161";实际上:操作成功! (这只有56个字符)
转换byte后一个中文占2个字节,这是它的站位为60个字节。
我取出这个60个字节转换String后少了4位。
2楼的方法会出现这样的问题
这是因为String.length()方法是计算char的个数,无论汉字,字母还是英文都算1个char这是char和byte的区别造成的
你是用什么字符集来编码
byte y=new byte();
等哈哈我回去拿我电脑给你做了发给你