代码如下:

 public class Main_bytesToStr {

     public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("defaultCharset: " + Charset.defaultCharset().name());
System.out.println("file.encoding:" + System.getProperty("file.encoding"));
System.out.println(); String word = "a好";// 字符或字符串在Java内存中始终以内部编码即UTF-16保存。且采用大端
printTransStr(word, "ISO-8859-1");
printTransStr(word, "GBK");
printTransStr(word, "Unicode");
printTransStr(word, "UTF-16");
printTransStr(word, "UTF-16BE");
printTransStr(word, "UTF-16LE");
System.out.println(); InputStreamReader ir = new InputStreamReader(System.in); } public static void printTransStr(String word, String charset) throws UnsupportedEncodingException {
System.out.println("--------" + word + " " + charset + "--------");
byte[] bytes = word.getBytes(charset);
System.out.println(binaryToStr(bytes, 2));
System.out.println(binaryToStr(bytes, 8));
System.out.println(binaryToStr(bytes, 10));
System.out.println(binaryToStr(bytes, 16));
} /**
* 将byte[]转为各种进制的字符串
*
* @param bytes
* byte[]
* @param radix
* 基数可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制
* @return 转换后的字符串
*/
public static String binaryToStr(byte[] bytes, int radix) {
return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数
// System.out.printf("%x ",bytes[0]);
}
}

结果如下:

 defaultCharset: GBK
file.encoding:GBK --------a好 ISO-8859-1--------
110000100111111
60477
24895
613f
--------a好 GBK--------
11000011011101011000011
30335303
6404803
61bac3
--------a好 Unicode--------
111111101111111100000000011000010101100101111101
7757740030254575
280371176495485
feff0061597d
--------a好 UTF-16--------
111111101111111100000000011000010101100101111101
7757740030254575
280371176495485
feff0061597d
--------a好 UTF-16BE--------
11000010101100101111101
30254575
6379901
61597d
--------a好 UTF-16LE--------
1100001000000000111110101011001
14100076531
1627422041
61007d59

从Unicode或UTF-16的结果也可以看出,JVM采用大端方式存多字节的数据。

Java字节数组转按radix进制输出的更多相关文章

  1. Java 将字节数组转化为16进制的多种方案

    很多时候我们需要将字节数组转化为16进制字符串来保存,尤其在很多加密的场景中,例如保存密钥等.因为字节数组,除了写入文件或者以二进制的形式写入数据库以外,无法直接转为为字符串,因为字符串结尾有\0,当 ...

  2. JAVA byte数组转化为16进制字符串输出

    最简单的方法: 利用javax.xml.bind包下的DatatypeConverter printHexBinary public static java.lang.String printHexB ...

  3. JAVA中将byte[]数组转成16进制字符串

    方法一: /** * byte数组转化为16进制字符串 * @param bytes * @return */ public static String byteToHexString(byte[] ...

  4. 为什么加密后的数据往往都是base64输出而不是hex16进制输出

    通常加密后的数据都是字节数组,比如流行的aes128对称加密,还有Rsa非对称加密,加密后得到了一个字节数组,这个字节数组存在内存中,往往我们需要输出得到我们人眼能看到的字符. 加密aes(xxx) ...

  5. 把十进制整数转换为r(r=2)进制输出(顺序栈实现)

    上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1)      初始化顺序栈 2)      实现入栈和出栈操作 3)      实现取栈顶元素 ...

  6. 基于visual Studio2013解决面试题之1203转16进制输出

     题目

  7. C printf按8进制、10进制、16进制输出以及高位补0

    ; /*按整型输出,默认右对齐*/ printf("%d\n",PrintVal); /*按整型输出,补齐4位的宽度,补齐位为空格,默认右对齐*/ printf("%4d ...

  8. java字节数组和16进制之间的转换

    /* * To change this template, choose Tools | Templates * and open the template in the editor. */ pac ...

  9. Java的浮点数和整数的进制转换

    整数的表达 –原码:第一位为符号位(0为正数,1为负数) –反码:符号位不动,原码取反 –负数补码:符号位不动,反码加1 –正数补码:和原码相同     -6      5 原码 10000110 0 ...

随机推荐

  1. android 解决ListView点击与滑动事件冲突

    如果你的ListView的Item有滑动功能,但又点击Item跳转到其它activity,这样若是在Adapter里面写点击事件是会导致滑动事件获取不到焦点而失效: 解决方法:不要在adapter里面 ...

  2. js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)

    js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){ alert(array[i]) } //for ...

  3. 解决Android Graphical Layout 界面效果不显示

    解决Android Graphical Layout 界面效果不显示 qq463431476

  4. 3D坦克大战游戏iOS源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  5. 升级Windows 10 正式版过程记录与经验

    升级Windows 10 正式版过程记录与经验 [多图预警]共50张,约4.6MB 系统概要: 预装Windows 8.1中文版 64位 C盘Users 文件夹已经挪动到D盘,并在原处建立了符号链接. ...

  6. Oracle安装注意点与工具使用简说

    oracle数据库安装 注意点:orcl,安装过程中指定sys,system等相关账户密码 scott账户下有常用的四张表,可用system或sys作为sysdba进去, 可alter user sc ...

  7. 用alarmmanager 多次发送PendingIntent

    遇到如下问题 service中得一随机数 用alarmmanager 发送PendingIntent的时候,receiver收到的随机数不变. pendingintent传值经常获取到的值是第一次的值 ...

  8. [WPF系列]-高级部分 需要区分的东东

    ContentControl VS ContentPresenter What's the difference between ContentControl and ContentPresenter ...

  9. EF With SQLite

    EF 虽说官方声称支持SQLite,但实际用起来还真没有SQLSever好使. 不支持真正的CodeFirst,需要先建表结构. 不支支持Migration 需要修改App.config 文件 安装 ...

  10. hdu2082 找单词 (母函数)

    找单词 题意: 中文题,考虑是不是要写个英文题意..(可惜英语水平不够  囧rz)                (题于文末) 知识点: 母函数(生成函数): 生成函数有普通型生成函数和指数型生成函数 ...