`

字符编码表-字符串-字符-字节-字节数组理解

    博客分类:
  • java
 
阅读更多

 

 

字符串是由一个一个的字符组成

每个字符按照编码表有一个对应的数字(编码表的作用)

编码查询:http://www.mytju.com/classcode/tools/encode_utf8.asp

每个字符直接赋值给整数则可以得到对应字符编码表中的数值

 

 

编码表:字符和数字之间的对应关系表

java中字符类型和整数类型可以互相转化

字符型常量以Unicode(ascii)编码形式存储,占用2个字节,

当字符赋值给整数,则在编码表中查到相应的数值赋值(对应关系)

当整数赋值给字符,则在编码表中查到相应的字符赋值

 

 

utf-8编码变长编码,1-4个字节表示一个字符,对单字节范围内字符仍然用一个字节表示,对汉字采用三个字节表示。

 

 

对于任何一个字符串-每个字符在字符编码表中对应一个十六进制数值 

 

“君”的unicode编码十六进制表示形式541b转换为二进制为 101010000011011一共8位,

按照utf-8的规则变成3个字节表示一个中文,则二进制表示为11000101  10010000 10011011,比unicode多出来的都是按照utf-8规则多出来的规则位置,

  转换为十六进制的变为:c5909b ,则放到字节数组中就变成3个字节的c5909b。

二进制对比:

utf-8:  11000101  10010000 10011011  -- c5909b

unicode:     101    010000   011011  -- 541b

 

参考:

 http://www.mytju.com/classcode/tools/encode_utf8.asp

 https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/index.html

 

 十进制、原码、反码、补码工具:http://www.atoolbox.net/Tool.php?Id=952

 

 

补码个人理解:
1、计算机只认识0、1即二进制
2、计算机没有减法(需要把减法转换成加法),即补码作用就是减法转加法(本质负数的源码和补码相加=对应位数最大值,需要去掉符号为计算)
3、如:对于八位二进制,第一位为符号为,那最大值为(1111111,七个1,第一位是符号位)
11101101(去掉第一位符号位:109 ),对应补码10010010(去掉第一位符号位数值为:18) ,两者和是127(11111111、八个1)
即:11101101 + 10010010 = 去掉符号位结果为1111111 七个1

个人理解负数补码为-对于8位二进制负数:
10010010   18
11101101  109
两者相加为 8个1

 

 

字符和编码转换实例:

 

        String str = "ab君" ;

        for(int i=0;i<str.length();i++ ){
            //字符
            char c = str.charAt(i);
            System.out.println( c );
            //字符 对应编码 的数值
            int k = c;
            System.out.println( k );
        }


        String ca = "君";
        char[] c = ca.toCharArray();
        char ca = 97;
        System.out.println( ca );

 

分享到:
评论

相关推荐

    php字符串与byte字节数组转化类.zip

    介绍php字符串与byte字节数组转化类,转换一个String字符串为byte数组,将字节数组转化为String类型的数据,转换一个int为byte数组,从字节数组中指定的位置读取一个Integer类型的数据,转换一个shor字符串为byte...

    vb6.0 字节数组和字符串的相互转换.rar

    在VB6.0编程环境中,字节数组和字符串之间的转换是常见的操作,尤其是在处理二进制数据和文本数据之间转换的场景。本教程将详细解释如何在VB6.0中进行这两种数据类型的转换,并通过实际示例进行演示。 1. 字符串转...

    字符串与字节数组之间的转换

    ### 字符串与字节数组之间的转换 在计算机编程领域,数据的转换是一项非常重要的工作,尤其是在处理网络通信、文件读写等场景时。本文将详细介绍如何在.NET框架下实现字符串与字节数组之间的转换,特别是字符串到16...

    16进制与字符串、字节数组之间的转换

    为了将一个字符串转换为十六进制表示,可以先将其编码为字节数组,再将每个字节转换为十六进制形式: ```csharp public static string StringToHexString(string str, Encoding encoding) { byte[] bytes = ...

    ASCII码字符串(十六进制)与字节数组的互转

    在这个场景下,我们需要理解如何在LabVIEW中将ASCII码字符串(通常以十六进制形式表示)转换为字节数组,反之亦然。 首先,我们要了解ASCII码。ASCII(American Standard Code for Information Interchange,美国...

    PB POWERBUILDER 字符串 数组 相互 转换 转化

    |PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * * | | * *如果你将这个程序放在你的网站上,我希望你能同时加上本站的链接 | | * | * | * *老字符串转数组...

    C#16进制与字符串字节数组之间的转换代码

    接着指定字符集(如UTF-8或GB2312),获取相应的编码对象,并将字符串转换为字节数组。最后,遍历字节数组并将其每个元素转换为十六进制字符串,同时可以根据参数选择是否在每个十六进制数之间插入分隔符。 ```...

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    - 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...

    c#与编码无关的字符串与字节数组相互转换

    web应用中,客户端和服务器端需要交换信息,字符串形式的信息交互是...如果字符串中有中文,客户端在信息发送前需要把它转换为字节数组,转换的时候需要采用指定的编码。 本文提供的方法不需要指定编码,是通用的方法。

    基64字节数组转基64字符串

    在标题和描述中提到的"基64字节数组转基64字符串"就是指将存储图像等二进制数据的字节数组转换为可读的Base64字符串,这个过程对于前端和后端之间的数据交互至关重要。 `base64BinArrayToStr`函数就是实现这一转换...

    图片文件与Base64编码字节数组字符串互转

    在IT领域,尤其是在Web开发中,图片文件与Base64编码字节数组字符串的转换是一种常见的操作。这种转换在不直接使用图片文件路径或URL,而是将图片数据嵌入到HTML、CSS或JavaScript中时非常有用。下面我们将详细探讨...

    matlab字符串数组

    `size()`函数显示了它们的尺寸,数值数组`a`占用8字节,而字符串数组`b`占用2字节,尽管在MATLAB中字符串的尺寸表示为1x1,实际上它会占用额外的字节来存储字符信息。 在【例3.1.2-1】中,我们进一步了解了字符串...

    C#字节数组转16进制字符串

    C#字节数组转16进制字符串 C#字节数组转16进制字符串 QQ:292258449

    winform 字符串和字节数组转换源码

    在Windows Forms(Winform)开发中,经常需要处理字符串与字节数组之间的转换,这是因为字符串在内存中是Unicode格式,而字节数组则可以用于数据传输、存储或者序列化。本文将深入探讨如何在C# Winform环境中进行...

    整形数组与字符数组相互转换

    3. 序列化与反序列化:将整形数组转换为字符数组的过程可以看作是序列化,即将结构化的数据转化为字节流,方便存储或传输。反之,将字符数组还原为整形数组是反序列化,即从字节流中恢复原始数据结构。 4. 数据库...

    Labview局域网UDP通讯-发送接收数组字符串.zip

    在本案例中,"Labview局域网UDP通讯-发送接收数组字符串.zip"是一个包含Labview子程序的压缩包,专门用于实现局域网内的UDP通信。UDP(User Datagram Protocol)是传输层的一种无连接协议,常用于实时数据传输,因为...

    多字节与UTF-8、Unicode之间的转换

    - 使用`MultiByteToWideChar`函数将多字节字符串转换为宽字符字符串(WCHAR数组)。 - 再通过`WideCharToMultiByte`函数将宽字符字符串转换为UTF-8编码的字符序列。 2. **UTF8ToMB** 该函数实现了从UTF-8编码...

    android byte字节数组转换十六进制字符串

    首先,我们要理解字节数组和十六进制字符串的基本概念。字节数组是Java和Android中用于存储和处理二进制数据的数据结构,而十六进制字符串则是用十六进制数字(0-9和A-F)表示每个字节的值。一个字节由8位组成,可以...

    字符串转基64字节数组

    然后,根据输入的字符串`str`,逐个字符地计算其在`code`数组中的索引,并根据基64编码规则进行位运算,最终将每个字符转换为对应的字节值。 ##### 函数详解: 1. **初始化变量**: - `arr`:用于存储结果字节...

    java 16进制表示的字符串转换为字节数组 工具类

    /** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 * @return byte[] 字节数组 */ public static byte[] hexStringToByteArray(String hexString) { hexString = hexString.replaceAll...

Global site tag (gtag.js) - Google Analytics