您当前的位置:首页 > 互联网教程

java 里面的string 和byte[] 怎么互转

发布时间:2025-10-10 22:25:35    发布人:远客网络

java 里面的string 和byte[] 怎么互转

一、java 里面的string 和byte[] 怎么互转

byte[] midbytes=isoString.getBytes("UTF8");

byte[] isoret= srt2.getBytes("ISO-8859-1");

String isoString= new String(bytes,"ISO-8859-1");

String srt2=new String(midbytes,"UTF-8");

在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。

将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。

我们用socket传输String类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱码”的问题。

byte[] sendBytes= sendString.getBytes("UTF8");

String recString=new String( sendBytes,"UTF-8");

但是,这里往往又会出现这样一个问题。就是想要发送的数据本身就是byte[]类型的。

如果将其通过UTF-8编码转换为中间件String类型就会出现问题

byte[] bytes= new byte[]{ 50, 0,-1, 28,-24};

String sendString=new String( bytes,"UTF-8");

byte[] sendBytes= sendString.getBytes("UTF8");

String recString=new String( sendBytes,"UTF-8");

byte[] Mybytes=isoString.getBytes("UTF8");

这时Mybytes中的数据将是[50, 0,-17,-65,-67, 28,-17,-65,-67]

因此,需要采用单字节的编码方式进行转换

String sendString=new String( bytes,"UTF-8");改为 String sendString=new String( bytes,"ISO-8859-1");

byte[] Mybytes=isoString.getBytes("UTF8");改为 byte[] Mybytes=isoString.getBytes("ISO-8859-1");

二、java 中,char 数组转换成 byte数组(急,在线等)

1、import java.io.FileInputStream;

2、import java.nio.charset.Charset;

3、public static void main(String[] args) throws IOException{

4、FileInputStream fs;//定义流对象变量

5、fs= new FileInputStream("/Users/mac/AndroidStudioProjects/MyApplication/lib/src/main/java/com/example/lib/mytext.txt");

6、byte[] bytes= new byte[fs.available()];//定义接收数据的字节数组,并用流对象初始化数组大小

7、char[] w= getChars(bytes);//将字节数组转化为字符数组,注意数组末尾会有空字符

8、String s= new String(w);//利用字符串构造函数来构造字符串,

9、System.out.println("结果为:"+s.trim());输出时,去掉末尾空格字符

10、private static byte[] getBytes(char[] chars){

11、Charset cs= Charset.forName("UTF-8");//设定字符集编码代号

12、CharBuffer cb= CharBuffer.allocate(chars.length);//按照字符数组长度进行分配空间

13、private static char[] getChars(byte[] bytes){

14、Charset cs= Charset.forName("UTF-8");//指定字符集编码

15、ByteBuffer bb= ByteBuffer.allocate(bytes.length);

16、CharBuffer cb= cs.decode(bb);//按照指定字符集进行解码

17、return cb.array();//返回字符数组

三、java 怎么将string转换成byte

byte[] midbytes=isoString.getBytes("UTF8");

byte[] isoret= srt2.getBytes("ISO-8859-1");

String isoString= new String(bytes,"ISO-8859-1");

String srt2=new String(midbytes,"UTF-8");

在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。

将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。

我们用socket传输String类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱码”的问题。

byte[] sendBytes= sendString.getBytes("UTF8");

String recString=new String( sendBytes,"UTF-8");

但是,这里往往又会出现这样一个问题。就是想要发送的数据本身就是byte[]类型的。

如果将其通过UTF-8编码转换为中间件String类型就会出现问题

byte[] bytes= new byte[]{ 50, 0,-1, 28,-24};

String sendString=new String( bytes,"UTF-8");

byte[] sendBytes= sendString.getBytes("UTF8");

String recString=new String( sendBytes,"UTF-8");

byte[] Mybytes=isoString.getBytes("UTF8");

这时Mybytes中的数据将是[50, 0,-17,-65,-67, 28,-17,-65,-67]

因此,需要采用单字节的编码方式进行转换

String sendString=new String( bytes,"UTF-8");改为 String sendString=new String( bytes,"ISO-8859-1");

byte[] Mybytes=isoString.getBytes("UTF8");改为 byte[] Mybytes=isoString.getBytes("ISO-8859-1");