java 里面的string 和byte[] 怎么互转
发布时间:2025-10-10 22:25:35 发布人:远客网络
一、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");