char
人能识别的字符,在Java中用Unicode表示,占两个字节,可以表示中文。在jvm中,它的值是唯一的,可以用数字表示:
char a1 ='周'; char a ='\u5468'; //Unicode char aa =0x5468; //十六进制 char aaa = 21608; //十进制 System.out.println(a1); System.out.println(a); System.out.println(aa); System.out.println(aaa); 输出: 周 周 周 周
打印所有char
int u=0; for(int i=0; i<=0xffff; i++){ System.out.print((char)i); u++; if(u==100){ System.out.println(); u=0; } }
String
字符串 本质上就是char[]
String a='中国人4'; System.out.println(a.length); 输出:4
byte[]
计算机能识别的二进制字节,用于CPU计算、存储或网络传输,一个byte有8位(bit)
编码
为什么要编码,Jvm中char可以当做数字来进行运算,每个char占两个字节非常便于CPU计算。但是用作IO传输或存储就显得字节臃余,也不能容错。
想象一下发送电报把一句话(String)变成二进制电文(byte[])叫编码,使用不同的编码表(Charset)产生的二进制电文不一样。
String str ="a中c"; byte[] bytes = str.getBytes("utf-8"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,-28,-72,-83,99,
String str ="a中c"; byte[] bytes = str.getBytes("gb2312"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,-42,-48,99,
String str ="a中c"; byte[] bytes = str.getBytes("gbk"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,-42,-48,99, 说明gbk与gb2312是部分兼容的
String str ="a中国c"; byte[] bytes = str.getBytes("ascii"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,63,63,99, 对于超出范围的字符用63表示
解码
将电文(byte[])翻译成一句话(String),使用的解码表(Charset)必须和编码的一样
String str ="a中国c"; byte[] bytes = str.getBytes("ascii"); String newStr = new String(bytes, "ascii"); System.out.println(newStr); 输出:a??c
参考:https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
相关推荐
{* DELPHI、PHP、C#通用DES编码解码单元 *} {* 由TurboPower LockBox部分代码改写 *} {* 滕州市东鸣软件工作室制作 ZWF 2011-12-27 *} {*********************************************************} {EncryDes为...
减少库的使用,解决那些需要小代码量,但苦恼于没有简易的字符串处理函数的郁闷 char *itoa_private(int...int gsmBytes2String(const unsigned char* pSrc, char* pDst, int nSrcLength);//字节数据转换为可打印字符串
C#各种数据类型转换,字符串 转换 char数组,char数组 转换 字符串,byte数组 转换 字符串,字符串 转换 byte数组 注意转换出来会使原来的bytearray长度变短,字符串 转换 byte数组 长度为传如的长度,将字符串编码为Base...
Java 使用大家知道的2的补码(two's complement )这种编码来表示负数,也就是通过将与其对应的正数的二进制代码取反(即将1变成0,将0变成1),然后对其结果加1。例如,-42就是通过将42的二进制代码的各个位取反,...
支持namespace,但不校验schema 为什么FastXml这么快尽可能少的解码字节:往往xml文档中的很多字节都是ASCII范围,它们可以直接强转成char,而不需要解码,比如:标签名、属性名,大部分时候只需要对属性值和...
typedef unsigned char BYTE; struct ImageComponentData { double value[3]; }; class MBitReader { public: BYTE* Data; int m_currentData; int m_currentDataIndex; int m_currentBitPosition; ...
typedef unsigned char BYTE; struct ImageComponentData { double value[3]; }; class MBitReader { public: MBitReader(BYTE* data,int currentDataIndex) { Data=data; m_currentBitPosition=8; m_...
最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...
CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。 BufferedReader 很明显就是一个装饰器,它和其子类负责装饰其它Reader ...
tars-stream for tencent/Tars TARS Protocol encoding/decoding ...vector<char> bytes::Bytes vector Vec map BTreeMap tars 协议的坑 optional 即使不设值(Rust使用Option表示完全没问题),其他实
* 1、因为字符集不统一,即编码和解码new String(b,0,read,"gbk")字符集不一致 * 2、因为字节流读取汉字的时候,字节数组长度不够,将一个汉字拆开了 * 解决: * 1. 用字符流用统一的字符集(最...
string类的ToCharArray 方法用来将字符串中的字符复制到Unicode 字符数组,该方法有两种重载形式,本 实例中用到的它的重载形式如下: public char[] ToCharArray() 参数说明 返回值:元素为此字符串的各字符的...
typedef void (__stdcall *PFNTRTLRUNDECODEUNICODESTRING) (BYTE, PUNICODE_STRING); // Private Prototypes BOOL IsWinNT (void); BOOL IsWin2K (void); BOOL AddDebugPrivilege (void); DWORD FindWinLogon...
public string[] mp4FileName = new string[9]; /// /// 实例化视频上传类 /// public NetFileTransferClient Ntc = new NetFileTransferClient(); /// /// playHandle,NET_DVR_PlayBackByName() /// ...
/// 此DSP上第一个编码通道在所有编码通道中的索引 /// uint firstEncodeChannelIndex; /// /// 此DSP所包含的解码通道个数 /// uint decodeChannelCount; /// /// 此DSP上第一个解码通道在所有解码...
这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: <#if condition>... <#elseif condition>... <#elseif condition>... <#else> ... 例子如下: (age>60)>老年人 ...
5、LCD_Write_String ----------------写一个字符串 6、LCD_Write_Char --------------------写一个字符 7、LCD_Init --------------------------lcd初始化 8、Lcd_User_Chr ------------------用户自定义字符 9、...