java进制与字节之间的转换

(一)默认是以自带的eclipse的编码方式 

byte[] mybate=s.getBytes();

(二)utf-8中文是有3个字节,英文1个字节。

byte[] mybate2=s.getBytes("utf-8");//utf-8中文是有3个字节

(三)gbk中文是有2个字节,英文是1个字节

byte[] mybate3=s.getBytes("gbk");//gbk中文是有2个字节,英文是1个字节

(四)eclipse默认是java是双字节编码  utf-16be,中文占用2个字节,1个英文两个字节

byte[] mybate4=s.getBytes("utf-16be");//gbk中文是有2个字节,英文是1个字节

(五)当你的字节序列式某种编码时,这时候把字节序列变成字符串,也需要这种方式,否则会出现乱码

System.out.println();
String str=new String(mybate4);
System.out.println("str:"+str);
//字节序列转换
String str4=new String(mybate4,"utf-16be");
System.out.println("str4:"+str4);


代码如下:

package test0428;

import static org.junit.Assert.*;

import java.io.UnsupportedEncodingException;

import org.junit.Test;

public class testjinzhi {

	@Test
	public void test() throws UnsupportedEncodingException {
		String s="学习ABC";
		byte[] mybate=s.getBytes();//默认是以自带的eclipse的编码方式
		for(byte b:mybate){
			//以十六进制的方式转换
			System.out.print(Integer.toHexString(b& 0xff)+" ");
		}
		System.out.println();
		byte[] mybate2=s.getBytes("utf-8");//utf-8中文是有3个字节
		for(byte b:mybate2){
			//以十六进制的方式转换
			System.out.print(Integer.toHexString(b& 0xff)+" ");
		}
		System.out.println();
		byte[] mybate3=s.getBytes("gbk");//gbk中文是有2个字节,英文是1个字节
		for(byte b:mybate3){
			//以十六进制的方式转换
			System.out.print(Integer.toHexString(b& 0xff)+" ");
		}
		//java是双字节编码  utf-16be,中文占用2个字节,1个英文两个字节
		System.out.println();
		byte[] mybate4=s.getBytes("utf-16be");//gbk中文是有2个字节,英文是1个字节
		for(byte b:mybate4){
			//以十六进制的方式转换
			System.out.print(Integer.toHexString(b& 0xff)+" ");
		}
		/*
		 * 当你的字节序列式某种编码时,这时候把字节序列变成字符串,也需要这种方式,否则会出现乱码
		 * */
		System.out.println();
		String str=new String(mybate4);
		System.out.println("str:"+str);
		//字节序列转换
		String str4=new String(mybate4,"utf-16be");
		System.out.println("str4:"+str4);
	}

}

运行结果如下:

d1 a7 cf b0 41 42 43             //自带的eclipse默认编码方式,我的是GBK
e5 ad a6 e4 b9 a0 41 42 43             //utf-8
d1 a7 cf b0 41 42 43              //gbk
5b 66 4e 60 0 41 0 42 0 43        //utf-16be
str:[fN`A B C                           //出现乱码

str4:学习ABC                    //转换格式后


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值