求教String(byte[] byte)问题

ybfq65 2010-01-22 09:37:26
{
byte[]={1,2,3};
String str=new String(b);
System.out.println(str);
}
在我的2k机器上编译运行后,输出的却不是123,而是另外的一串符号?谢谢!
...全文
221 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
24K純帥 2010-01-25
  • 打赏
  • 举报
回复
up..byte数组写错鸟
phyerbarte 2010-01-25
  • 打赏
  • 举报
回复

public static void main(String[] args) {
byte[] b={'1','2','3'};
String str=new String(b);
System.out.println(str);
}
sunkaidong 2010-01-25
  • 打赏
  • 举报
回复
学习中。呵呵
nicai00 2010-01-25
  • 打赏
  • 举报
回复


学习
  • 打赏
  • 举报
回复
char data[] = {'1', '2', '3'};
String str = new String(data);
ybfq65 2010-01-25
  • 打赏
  • 举报
回复
先把各位老大都谢上一遍!
kernll 2010-01-25
  • 打赏
  • 举报
回复
123是整数类型,一般字符打印是会打印相应的Ascii字符的。这个查看一下Ascii字符编码就可以了,要想显示123,将它们加上'1','2','3'
sky123123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuanze520 的回复:]
API 解释如下:
public String(byte[] bytes)
构造一个新的 String,方法是使用平台的默认字符集解码字节的指定数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。
[/Quote]

晴天v1 2010-01-25
  • 打赏
  • 举报
回复
假如用字节流读取文本文件,文本文件读到byte数组里面就是一串数组,但是用new String(byte [] array)构造String的话,就可以得到原来文本中的字符串。
ybfq65 2010-01-25
  • 打赏
  • 举报
回复
明白了,谢谢!
Forrest23 2010-01-22
  • 打赏
  • 举报
回复
又学到了一点
top00zw 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xlxyeyu 的回复:]
引用 3 楼 sunnylyy 的回复:
看下ascii表中1,2,3对应的字符是什么,就明白了。

想得到123的结果,应该是这样:

byte[] b={49,50,51};
String str=new String(b);
System.out.println(str);


顶啊
[/Quote]
不吃鱼的熊 2010-01-22
  • 打赏
  • 举报
回复
API 解释如下:
public String(byte[] bytes)
构造一个新的 String,方法是使用平台的默认字符集解码字节的指定数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。
wmdtksmld 2010-01-22
  • 打赏
  • 举报
回复
看看
Johnson_Hong 2010-01-22
  • 打赏
  • 举报
回复
new String()并不是实现楼主想象的那个功能,每个string,通过不同的字符集,可能编码成不同的byte[],new String()是把byte[]解码成在这个字符集上的string,其实还有一个参数 new String(byte[] b,String charset),String(byte[] b)的charset参数取得是系统默认字符集

楼主想要的功能是用String(char[] ch)
char data[] = {'1', '2', '3'};
String str = new String(data);
xlxyeyu 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunnylyy 的回复:]
看下ascii表中1,2,3对应的字符是什么,就明白了。

想得到123的结果,应该是这样:

byte[] b={49,50,51};
String str=new String(b);
System.out.println(str);
[/Quote]

顶啊
sunnylyy 2010-01-22
  • 打赏
  • 举报
回复
看下ascii表中1,2,3对应的字符是什么,就明白了。

想得到123的结果,应该是这样:

byte[] b={49,50,51};
String str=new String(b);
System.out.println(str);
临远 2010-01-22
  • 打赏
  • 举报
回复
输出的是ansi码对应的字符。
config_man 2010-01-22
  • 打赏
  • 举报
回复
用char数组

62,621

社区成员

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

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