public
static
void
main
(String[] args) {
String s =
"12345678"
;
System.out.println(s);
String u =
"\\u0031\\u0032\\u0033\\u0034\\u0035\\u0036\\u0037\\u0038"
;
System.out.println(u);
try
{
byte
[] bytes1 = s.getBytes(
"UNICODE"
);
byte
[] bytes2 = s.getBytes(
"UTF-16LE"
);
byte
[] bytes3 = s.getBytes(
"UTF-16BE"
);
System.out.println(Arrays.toString(toHexArr(bytes1)));
System.out.println(Arrays.toString(toHexArr(bytes2)));
System.out.println(Arrays.toString(toHexArr(bytes3)));
System.out.println(
new
String(bytes1));
System.out.println(
new
String(bytes2));
System.out.println(
new
String(bytes3));
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
static
String[] toHexArr(
byte
[] bytes) {
String[] hexArr =
new
String[bytes.length];
for
(
int
i =
0
; i < bytes.length; i++) {
String s = Integer.toHexString(bytes[i]);
if
(s.length() ==
1
) {
s =
"0"
+ s;
s =
"0x"
+ s;
hexArr[i] = s;
return
hexArr;
当直接使用Unicode 作为字符集的时候转换的byte 数组会多出来两个字节,原因是在 Java 中直接使用Unicode 转码时会按照 UTF-16LE 的方式拆分,并加上 BOM(Byte Order Mark)。如果采用 UTF-16 拆分,在 Java 中默认采用带有 BOM 的 UTF-16BE 拆分。so 想去掉多出来的两个字节可以用UTF-16LE或者UTF-16BE来替换直接使用Unicode。
Android 学习笔记 (1)Unicode编码的byte 数组转为Stringpublic class Test { public static void main(String[] args) { String s = "12345678"; System.out.println(s); String u = "\\u0031\\u003
任何
字符串
都是
String
类的对象,
字符串
是不变的,它们的值在创建后无法更改
在
字符串
的内部,是用一串字符char[]来存储的。因为数组一经确定长度无法更改,所以
字符串
一经创建就无法更改。
如果两个
字符串
内容相同,则他俩使用同一个内存地址,所以可以共享它们
public class Demo2 {
public static void main(
String
[] args) {
String
s1 = "123";
String
s2 = "123";
通过用例学习Java中的
byte
数组和
String
互相转换,这种转换可能在很多情况需要,比如IO操作,生成加密hash码等等。
除非觉得必要,否则不要将它们互相转换,他们分别代表了不同的数据,专门服务于不同的目的,通常
String
代表文本
字符串
,
byte
数组针对二进制数据
通过
String
类将
String
转
换成
byte
[]或者
byte
[]转
换成
String
用
String
.get
Byte
s(...
本文转自:http://blog.csdn.net/
android
bluetooth/article/details/7686760
只要牵扯到字符
编码
的编程,脾气就会异常的,看着那一堆堆乱码,就巴不得拿刀砍死它!
现在有个这样的需求:
使用打印机打印指定的内容,然后按照指定的协议与设备通信。
该打印机认识
unicode
编码
的字符。
所以,需要将指定内容(Stri
参考:https://www.cnblogs.com/lshao/p/11429429.html
一次在解密某个加密
字符串
时,解密结果是个
unicode
字符串
,解密接口封装成了DLL,
java调用解密接口时,通过
byte
[]数组接收解密后的数据
byte
[] dstBuf = new
byte
[1024]; // ...
如下图,一个
unicode
字符占2个字节空间,因为都是英文字符,
所以看到dstBuf奇数下标位置1、3、5、7、9...里面的值都是0,
所以可以确定dstBuf是个unico
#基础#
Unicode
(统一码、万国码、单一码)是一种在计算机上使用的字符
编码
。它为每种语言中的每个字符设定了统一并且唯一的二进制
编码
,以满足跨语言、跨平台进行文本转换、处理的要求。
Unicode
Character Table(入口在这里) 包含常见语言的字符和可打印的符号字符,字符提供了 HTML 代码,名称/描述和相应的打印符号。
Unicode
应用可以这么理解: