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 ...
随机推荐
- Oracle分区表
先说句题外话- 欢迎成都天府软件园的小伙伴来面基交流经验~ 一:什么是分区(Partition)? 分区是将一个表或索引物理地分解为多个更小.更可管理的部分. 分区对应用透明,即对访问数据库的应用 ...
- MongoDBV3.0.7版本(shard+replica)集群的搭建及验证
集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群 ...
- 【Linux学习】Linux操作技巧
linux 删除已输入的命令 ctl + u 删除光标以前的字符 ctl + k 删除光标以后的字符 ctl + a 移动光标至的字符头 ctl + e 移动光标至的字符尾 ctrl + w 往回删除 ...
- 烂泥:阿里云RDS本地恢复数据
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司目前使用的数据库是阿里云的RDS,目前RDS的版本为mysql5.6.如下: 现在要 ...
- Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程
下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(bina ...
- Virtualbox虚机无法启动因断电
The virtual machine 'nn1' has terminated unexpectedly during startup with exit code 1 (0x1). More ...
- [WPF系列]Button 自定义
A Simple Cross Button for WPF CREATING MORE COMPLEX BUTTONS IN XAML WPF Custom Controls - Withou ...
- C#学习笔记-ContextMenuStrip
ContextMenuStrip是就是所说的右键菜单,在VS里可以直接新建,挺方便.但是跟着师父看了很多代码,发现了好多时候都需要自己写这部分代码.这个部分目前为止我了解的还不是很多,更细致的就只有等 ...
- OpenStack 企业私有云的若干需求(5):主流硬件支持、云快速交付 和 SLA 保证
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- python3下urlopen解析中文url编码错误
这是在ipython下测试的结果: In [24]: x Out[24]: 'http://127.0.0.1:8000/xxx/?id=a45ex0bad3c9&game=五子棋' In [ ...