String 和 byte[] 怎样相互转化?

tjcougar 2003-04-30 01:51:03
String str="abcdefg";
byte[] bstr=str.getBytes();
str=bstr.toString();
System.out.println(str);
最后为什么得到的不是abcdefg?
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
michaeljie 2003-05-01
  • 打赏
  • 举报
回复
不好意思,上面的问题已经找到,就是当byte数组中的二进制数如果是负的,那么转换出来是错误的,怎么处理?
michaeljie 2003-05-01
  • 打赏
  • 举报
回复
to peacock_king(孔雀王): 象你这样的做法,会发生转换上的错误的。(是偶尔,原因我不知道。)
我先把文件读到数据库中的blob字段中,然后,用java读出来,如果用byte直接写文件(就是还原成原来的文件),则成功。但是如果用你的方法转成string再写,则不成功。有几位会和原来byte中的不一样。
rocandroc 2003-04-30
  • 打赏
  • 举报
回复
原理上java中用来表示Sring类是不可变的,没有任何方法允许你改变一个字符串的内容,如果你希望对字符串本身进行修改,需要使用StringBuffer对像。
String str="abcdefg";
StringBuffer strB = new StirngBuffer( str );

hanty 2003-04-30
  • 打赏
  • 举报
回复
getBytes();
Tianminghui 2003-04-30
  • 打赏
  • 举报
回复
new String(byte[],charsetname) String的构造函数

String.getBytes() String.getBytes(charsetname)
Philzzf 2003-04-30
  • 打赏
  • 举报
回复
换成

String str="abcdefg";
byte[] bstr=str.getBytes();
str=new String(bstr);
System.out.println(str);
peacock_king 2003-04-30
  • 打赏
  • 举报
回复
String s="ddddddddd";
byte []b=s.getBytes();

byte []a=new byte[50];
String ss=new String(a);

a.toString()与new String(a)是不同的,前者把每个byte转换成char,组成String;后者将每两个byte合成一个char,再组成String。
acefr 2003-04-30
  • 打赏
  • 举报
回复
public byte[] String_to_byte(String s)
{
byte[] b = new byte[200];
try
{
java.io.StringBufferInputStream sbi=new java.io.StringBufferInputStream(s);
b=new byte[sbi.available()];
sbi.read(b);
}
catch(Exception e)
{
System.err.print(e.toString());
}
return b;
}

62,614

社区成员

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

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