16进制与字符间互相转换的原理是什么?

各种高级编程语言都有直接转换的方式,不过不知道是按什么原理转换的.

比如说汉字"我"这个字符转换成16进制后是:CED2,程序是先把"我"这个字符按某种规则转换成数字,再把这个数字进行加减乘除等计算后再按某种规则转换成16进制字符CDE2,是这样的吗?
还是每个字符都对应唯一的一个16进制数组,在16进制与字符间互相转换时按"表"查询就可以了?就像c#中(char)(72)=char H,(int)(H)=int 72一样?

还有其他各进制与字符间的转换原理是不是和上面的一样?

有哪位朋友愿意回答我吗?

  一、原理:
  Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。
  根据以上原理,就可以将byte数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte数组了。  
  二 、16进制的意义:
  1、用于计算机领域的一种重要的数制。
  2、对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。
  3、十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-14
拿汉字的例子来说吧
每个汉字在机器内部的机内码是唯一的

按你说的,“我”的机内码是CED2,这样的话,是要在输出的时候进行转换成汉字,输出包括屏幕和打印机输出等。

一般是按照规则将机内码转换成区位码,然后到区位码这个“表”中去查询即可。
机内码转换:CED2 转换成 十六进制区位码为 2E32
2E32每两位换成十进制的区位码就是4650

也就是说你要把区位码存在一个表中或数组中,然后用区位码进行查询,区位码就行号和列号,这样就可以输出汉字字符了。通常这个区位码表是按自己的需求,来进行优化的,因为可能不需要存所有的汉字,这个表通常叫做字模库或者字形库,都是为了输出用的。本回答被提问者采纳
第2个回答  2009-09-10
对于高级语言文字服务(双字节文字),转换的方法是两个字节对应字体表中的一个字符。这只是一个一一对应的关系,没什么规律可循。
第3个回答  2009-09-10
我字的国标编码是CED2。
中文国标文件按 编码字节顺序排列。
我字为顺序两子节: 0xce 0xd2
中文国标文件 可以混合ascii码。
中文国标文件读法:
loop:
读一字节
如果数值大于0xa0,再读第二字节,两字节构成GB码中文字。goto loop;
如果数值不大于0xa0,它不是GB码,它是ascii码。单字节码。是EOF 则文件结束,否则 goto loop;
-------------------------------------
中文unicode文件:
头部有2-4bytes 特殊码,告诉big endian 或 小endian
全部是双字节编码。我字不是CED2。根据endian决定两字节是否要交换次序。
------------------------------------
其他中文文件: 各有巧妙。
第4个回答  2009-09-20
理解很简单的,“我”在计算机仍然是16进制代码,没有你我的概念,都已经提前转换好的(按照默认内码),除非手动强制编码转换,否则就由输入系统、编译系统自动转换好。
其他进制也是有16进制(当然存储时按2进制)转换而来的,不信你打印一下转换表就可以看出来。

16进制与字符间互相转换的原理是什么?
一、原理:Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new Str...

给一个C语言字符串转16进制
在C语言中,将字符串转换为16进制的过程其实基于一个基本原理:整数的十进制和十六进制表示其数值本质不变。转换方法是先计算出整数值,再以十六进制的形式输出。以下是实现这一功能的简化代码:理解了这个原理后,我们可以编写一个简单的函数来实现字符串到16进制的转换。首先,我们需要一个函数`convert`...

ASCII字符和16进制互转
1. 首先,我们需要理解ASCII转16进制的原理。2. 下面提供了一个简单的C语言函数示例,该示例可以将单个ASCII字符转换为16进制数。3. 函数`AscToHex`接受一个unsigned char类型的参数`aHex`,然后根据该参数的值进行转换。4. 如果参数`aHex`在0到9之间,它将直接加上0x30(即ASCII码表中的数字0的1...

字符串如何转换为16进制数?
最后一步是将所有转换得到的16进制数值拼接起来,形成一个完整的16进制表示。这个过程取决于编程语言的语法和函数库,通常可以使用字符串拼接函数来完成。这样,原始的字符串就被转换成了对应的16进制数表示。这种转换在计算机科学中非常常见,特别是在处理二进制数据和文本之间的转换时。

如何将字符转换为16进制数值
首先,定义一个字符串变量char和asc,保存转换的字符和转换后的16进制数。定义一个整型变量n,保存字符的ASCII码。给字符char赋值,其值为字符i。将字符char转换为ASCII码,并保存在n中。字符的ASCII码,进一步转换为16进制数,并保存在变量asc中。最后,输出字符转换为16进制数后的数值。运行程序,代码...

java16进制怎么转10进制
一、了解十六进制与十进制的转换原理 十六进制是计算机中常用的数字表示法之一,它的基数为16,包括0到9的十个阿拉伯数字以及A到F的六个英文字母。在计算机内部,每个十六进制数字对应一个特定的二进制数,因此在转换过程中需要将十六进制数分解为各个位上的值,然后按照其代表的二进制数进行转换。例如,...

...常用的十进制、16进制、字符串、字节串之间的转换
一、十进制与十六进制互转 Python提供了内置函数`hex()`与`int()`来完成转换。将十进制数转换为十六进制,使用`hex()`;将十六进制数转换为十进制,使用`int()`。例如:将十进制数10转换为十六进制,执行`hex(10)`,结果为`'0xa'`;将十六进制数`'0xa'`转换为十进制数,执行`int('0xa',...

C语言程序,怎么把16进制转成字符:
原理是这样的:你每次的四个字节的格式都是\\xyy的形式,我只要读入那个十六进制数就可以了,用scanf("%x",&num[i]);语句就可以读入十六进制数字,将一行的十六进制数在循环中全部取出存放在一维数组中。在输出方面我投了个懒,直接读入就输出了,不过这个不是关键了,关键是以printf("%c",num[i]...

怎样将十六进制代码转换成文字?
1、首先,在十六进制编辑模式下,左侧是行数,中间是转换后的十六进制代码,右侧是原始文本内容,如下图所示,然后进入下一步。2、其次,如果要查看某个字符的十六进制代码,可以单击右侧的原始字符位置,在中间部分可以看到相应的十六进制值,例如,单击[5],对应的是[ 35],如下图所示,然后进入下...

十六进制字符串怎么转换成对应的十六进制数
不知道你想怎么换,ASCII码最简单,数字+'0'就是这个数 字对应的字符 但是如果是GB编码,就有点麻烦了 ~要到网上找下GB编码,然后判断了.比如"我是"两个字的编码分别是:CED2,CAC7.而字母 是二位 16进制 的.这又设计到判断.因为你不知道16位是两对两对的.....

相似回答