Java字节数组转按radix进制输出
代码如下:
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进制输出的更多相关文章
- Java 将字节数组转化为16进制的多种方案
很多时候我们需要将字节数组转化为16进制字符串来保存,尤其在很多加密的场景中,例如保存密钥等.因为字节数组,除了写入文件或者以二进制的形式写入数据库以外,无法直接转为为字符串,因为字符串结尾有\0,当 ...
- JAVA byte数组转化为16进制字符串输出
最简单的方法: 利用javax.xml.bind包下的DatatypeConverter printHexBinary public static java.lang.String printHexB ...
- JAVA中将byte[]数组转成16进制字符串
方法一: /** * byte数组转化为16进制字符串 * @param bytes * @return */ public static String byteToHexString(byte[] ...
- 为什么加密后的数据往往都是base64输出而不是hex16进制输出
通常加密后的数据都是字节数组,比如流行的aes128对称加密,还有Rsa非对称加密,加密后得到了一个字节数组,这个字节数组存在内存中,往往我们需要输出得到我们人眼能看到的字符. 加密aes(xxx) ...
- 把十进制整数转换为r(r=2)进制输出(顺序栈实现)
上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1) 初始化顺序栈 2) 实现入栈和出栈操作 3) 实现取栈顶元素 ...
- 基于visual Studio2013解决面试题之1203转16进制输出
题目
- C printf按8进制、10进制、16进制输出以及高位补0
; /*按整型输出,默认右对齐*/ printf("%d\n",PrintVal); /*按整型输出,补齐4位的宽度,补齐位为空格,默认右对齐*/ printf("%4d ...
- java字节数组和16进制之间的转换
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ pac ...
- Java的浮点数和整数的进制转换
整数的表达 –原码:第一位为符号位(0为正数,1为负数) –反码:符号位不动,原码取反 –负数补码:符号位不动,反码加1 –正数补码:和原码相同 -6 5 原码 10000110 0 ...
随机推荐
- 搭建自己的PHP框架心得(三)
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- linux shell for循环使用命令中读取到的值实例
#!/bin/bash file="states" for state in `cat $file` do echo "Visit beautiful $state&qu ...
- Nova reboot 和 lock 操作 - 每天5分钟玩转 OpenStack(32)
前面 CloudMan 通过日志详细分析了 nova 的 launch, shut off 和 start 操作.不知道大家现在是否已经掌握了日志分析的技能? 今天咱们就来检验一下.本节讨论的是 no ...
- linux下的一些操作(持续更新)
文件操作 创建文件夹: mkdir 文件夹名称 查看当前目录的文件夹及文件:ls 参看当前文件夹下的所有文件及信息: ls -l 删除空文件夹:rmdir 文件夹名称 删除非空文件夹:rm rf 文件 ...
- 《小白的CFD之旅》招募写手
<小白的CFD之旅>系列招募写手. 由于工作繁忙,<小白的CFD之旅>系列更新缓慢,现招募志愿者写手.这是一个分享平台,欢迎各位愿意分享自己CFD学习经历的朋友们. <小 ...
- leetcode -- Convert Sorted List to Binary Search Tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- HDU1329 Hanoi Tower Troubles Again!——S.B.S.
Hanoi Tower Troubles Again! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- .Net的内置对象之一 Request
一.Request简介 Request对象是.net的内置对象之一,也是.net中常用的对象,用于获取客户端的信息,可以使用Request对象访问任何基于HTTP请求传递的所有信息.通过Request ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 实现缓存预热
因为大型应用系统可能有几十个子系统,为了减轻数据库频繁读写压力.提高系统的运行速度.反映速度,大型应用系统都需要采用缓存机制提高运行效率.Redis 缓存预热实现将来大家很多基础数据都可以缓存获取,不 ...
- OrchardNoCMS实体关系映射扩展
在OrchardNoCMS中,默认的系统会把实体关系映射保存到mappings.bin文件中. 如果不进行任何修改,默认的可以自动保存关系映射的model是有很大限制的. 条件是model的命名空间必 ...