`

java 机内码

阅读更多

 

工作中用到了机内码  完全陌生的概念  还好有万能的Google    记录一下 

过程  先转成区位码  再进行16进制计算

 

public class StringToJiNeiMa{

	
 
	public static void main(String[] args) throws Exception {
		String str = "计算机";
		int[] quwei = getQuwei(str);
		/*byte[] bs = str.getBytes("GB2312");
		String s = "";
		for (int i = 0; i < bs.length; i++) {
			int a = Integer.parseInt(bytes2HexString(bs[i]), 16);
			s += (a - 0x80 - 0x20) + "";
		}*/
		String s = "";
		for (int i : quwei) {
			s += i + ",";
		}
		//	System.out.println(s);

		String[] stringArray = s.split(",");

		StringBuffer jineima = new StringBuffer();
		for (String ss : stringArray) {

			String hex1 = Integer.toHexString(Integer.parseInt(ss.substring(0, 2)));
			String NewHex1 = hex1.length() > 1 ? hex1 : "0" + hex1;

			String hex2 = Integer.toHexString(Integer.parseInt(ss.substring(2, 4)));
			String NewHex2 = hex2.length() > 1 ? hex2 : "0" + hex2;

			long x1 = Long.parseLong(NewHex1, 16);
			long x2 = Long.parseLong(NewHex2, 16);

			//System.out.println(x);
			long y = Long.parseLong("A0", 16);

			jineima.append((Long.toHexString(x1 + y).toUpperCase()) + " " + (Long.toHexString(x2 + y).toUpperCase()) + " ");
		}
		System.out.println(jineima);

	}

	public static int[] getQuwei(String str) throws Exception {
		byte[] b = str.getBytes("gb2312");
		int[] quwei = new int[b.length / 2];
		for (int i = 0, k = b.length / 2; i < k; i++) {
			quwei[i] = (((b[2 * i] - 0xA0) & 0xff) * 100) + ((b[2 * i + 1] - 0xA0) & 0xff);
		}
		return quwei;
	}
	/*
	 * 1.机内码与区位码
	机内码高位字节=(区号)H+A0H
	机内码低位字节=(位号)H+A0H
	2.国标码与区位码
	国标码高位字节=(区号)H+20H
	国标码低位字节=(位号)H+20H
	3.区位码用两个10进制数表示,另外两种码用两个十六进制数表示.
	4."德"的区位码为2134,下面举例来看如何转成另外两种码:
	a.机内码
	高位字节=(21)(十进制)+A0H(十六进制)=15H+A0H=B5H
	低位字节=(34)(十进制)+A0H(十六进制)=22H+A0H=C2H
	所以,机内码为B5C2
	b.国标码
	高位字节=(21)(十进制)+20H(十六进制)=15H+20H=35H
	低位字节=(34)(十进制)+20H(十六进制)=22H+20H=42H
	所以,国标码为3542


	国标码=区位码+2020H,是这样计算的。区位码是使用十进制表示的。前两个表示“区”,后两个表示“位”,2838就是位于28区,38位,将28和38分别转换成16进制,就是1C26H
	然后用1C26H+2020H就得到了国标码。
	 */

}

 

 

分享到:
评论

相关推荐

    用C语言完成普遍地三种中文内码转换.doc

    同时,也可以使用其他编程语言和库来实现中文内码转换,例如使用 Python 的 chardet 库或 Java 的 java.nio.charset 包。 中文内码转换是计算机科学中一个重要的话题,了解中文内码转换的原理和实现方法对实际应用...

    内码转换工具convertz

    是一个中文GB及Big5内码转换工具。能够让你随心所欲地将简体文件转换成繁体文件。转换速度相当快和具有「简转繁列表」提高辨识率来更正GB转Big5后繁简异字的问题、支持同时转换多个文件文件、提供文件及剪贴簿内码...

    内码转换器.rar 免安装,

    除了内码转换器软件,还有一些编程语言提供了内置的编码转换函数,如Python的`codecs`库,Java的`Charset`类等。开发者也可以通过编程实现编码转换,但这需要对字符编码有深入的理解,包括字节流、字节序、字符集等...

    汉字--内码

    在不同的编码标准之间进行转换,如从GBK转为UTF-8,可能需要用到特定的函数或者库,如Java中的`Charset`类或者Python的`codecs`模块。如果不正确地进行转换,就可能出现乱码现象。 此外,了解汉字内码对于理解和...

    汉字内码查询 反查询.rar

    例如,在C++或Java等语言中,可以使用函数如`WideCharToMultiByte`或`Character.toString(char)`来获取汉字的内码表示。反之,如果已知内码,可以使用`MultiByteToWideChar`或`new String(byte[], charset)`将其转换...

    汉字内码查询 反查询.zip

    例如,在C++或Java等编程语言中,处理中文字符时需要考虑到字符编码,避免因为不当操作导致的乱码问题。 总结起来,汉字内码查询是一个方便的工具,它能够帮助用户深入理解汉字在计算机内部的表示方式,以及不同...

    4字节浮点数内码转换

    浮点数内码转换是计算机科学中的一个重要概念,特别是在处理数值计算和数据存储时。4字节浮点数,也称为单精度浮点数,遵循国际标准IEEE 754,这种格式在大多数现代计算机系统中广泛使用。4字节浮点数能够表示大约6...

    汉字内码查询 反查询软件

    在开发这样的软件时,常见的技术包括C、C++、C#、Java等编程语言,以及可能涉及到的库和框架,如Windows API(用于与操作系统交互)和GUI库(如Qt、wxWidgets等,用于创建用户界面)。此外,对字符编码的理解,如...

    Java中常用的各种技能

    在 Java 中,可以使用 `(int)char` 方法将 char 类型的变量转换成 int 类型,例如将汉字转换成其在计算机中相应的内码,整型。 11. 字符串比较 在 Java 中,可以使用 `equals()` 方法来比较字符串,例如:`String ...

    JavaIO流详解归纳.pdf

    Java 的 IO 体系分 Input/Output 和 Reader/Writer 两类,区别在于 Reader/Writer 在读写文本时能自动转换内码。 InputStream 是 Java 中的基础输入流,所有的输入操作都是基于这个流的。OutputStream 是 Java 中的...

    Java_IO流详解

    Java 的 IO 体系分 Input/Output 和 Reader/Writer 两类,区别在于 Reader/Writer 在读写文本时能自动转换内码。基本上,所有的 IO 类都是配对的,即有 XxxInput 就有一个对应的 XxxOutput。 Java 的输入/输出...

    Java乱码学习 Java乱码学习

    Java 乱码问题一直是开发过程中常见的困扰之一,它涉及到字符编码的理解、文件编码的设定以及网络传输中的编码处理。本文将深入探讨Java编程中的乱码现象,并提供一系列的解决策略。 首先,我们要理解两个基本概念...

    面试---1. Java&设计模式.pdf

    - **内码**:程序内部使用的字符编码,例如Java中的char或String类型在内存里的内部编码。 - **外码**:程序与外部交互时使用的字符编码,例如序列化后的char或String、外部文件、命令行参数等。 - Java规范规定,...

    Java判断文件的编码

    2. **GBK**:全称《汉字内码扩展规范》,是中华人民共和国国家技术监督局于1995年12月发布的汉字内码扩展规范。GBK兼容GB2312标准,且包含更多字符集。 3. **BOM(Byte Order Mark)**:即字节顺序标记,用来标记...

    xtu Java课程设计

    * 自动内码识别功能的实现 * 多线程编程的应用 2. 文件加密、解密工具: * 加密和解密算法的实现 * 密码的正确性校验 * 多线程编程的应用 * 文件处理的多线程实现 3. 通讯簿: * 数据库的设计和实现 * ...

    用JAVA写词法分析器

    数字则对应7,而括号、等号等特殊符号也有相应的内码。 在Java程序中,`Wordanalsys`类是词法分析器的核心。它包含了一系列的方法,如`Getchar()`用于从输入流中读取字符,`IsLetter()`和`IsDigit()`分别检查字符...

    GBK内码字符串转Unicode字符串

    在Java中,这个过程可以通过`java.nio.charset.Charset`类和相关的方法实现。例如,`Encoding.java`可能包含了如下代码: ```java import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; ...

    关于java乱码学习的一点总结

    Java 乱码问题一直是开发者们头疼的问题之一,它涉及到字符编码的不同阶段,包括源文件编码、编译过程、运行环境以及网络传输等多个环节。本文主要针对这些方面进行深入的探讨和总结。 首先,我们需要理解“内码”...

    GB2312中文内码.zip

    在实际应用中,如果你需要处理GB2312编码的文本,可以使用编程语言提供的字符串处理函数,如Python中的`codecs.decode()`或Java的`new String(bytes, "GB2312")`,将字节流转换为字符串。同时,现代编程语言和库通常...

Global site tag (gtag.js) - Google Analytics