java String getBytes

大家都知道java的char是双字节字符,而String提供了getBytes的函数,这个函数得到的bytes数组是什么样的形式存在呢?是双字节的字符顺序存在数组中吗?

做个试验

 

String ts1 = "112";
  byte[] ts2 = null;
   ts2 = ts1.getBytes();
这个输出的是112的ascii 49 49 50
注意到这个有个重载的方法加了个参数encoding,换个试试

String tests1 = "112";
  byte[] tests2 = null;
  try {
   ts2 = ts1.getBytes("UTF-8”);
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

输出还是 494950

String tests1 = "112";
  byte[] tests2 = null;
  try {
   ts2 = ts1.getBytes("UTF-16LE”);
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

输出变为了 490 490 500

在看一下sdk,--!写的太清楚了。。

byte[]getBytes()
          使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
 byte[]getBytes(Charset charset)
          使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。

系统的默认的charset是GBK,而Utf-8使用的是变字节编码,Utf-16用的二字节定长编码。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值