「java十六进制中文」十六进制 java

博主:adminadmin 2022-11-22 02:49:07 73

本篇文章给大家谈谈java十六进制中文,以及十六进制 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中如何将一组16进制转换为明文

不知道你说的16进制是什么编码,一般都是unicode编码吧。

Unicode-中文转换代码:

import java.io.UnsupportedEncodingException;

public class TestUnicode{

    public static void main(String[] args) throws UnsupportedEncodingException {

        String s = "简介";

        System.out.println(s+" --的unicode编码是:"+gbEncoding(s));

        System.out.println(gbEncoding(s) + " --转换成中文是:"+decodeUnicode(gbEncoding(s)));

        

        //System.out.println(gbEncoding(s) + " --转换成中文是:"+decodeUnicode("\\u7b80\\u4ecb"));

    }

    

    /*

     * 中文转unicode编码

     */

    public static String gbEncoding(final String gbString) {

        char[] utfBytes = gbString.toCharArray();

        String unicodeBytes = "";

        for (int i = 0; i  utfBytes.length; i++) {

            String hexB = Integer.toHexString(utfBytes[i]);

            if (hexB.length() = 2) {

                hexB = "00" + hexB;

            }

            unicodeBytes = unicodeBytes + "\\u" + hexB;

        }

        return unicodeBytes;

    }

    /*

     * unicode编码转中文

     */

    public static String decodeUnicode(final String dataStr) {

        int start = 0;

        int end = 0;

        final StringBuffer buffer = new StringBuffer();

        while (start  -1) {

            end = dataStr.indexOf("\\u", start + 2);

            String charStr = "";

            if (end == -1) {

                charStr = dataStr.substring(start + 2, dataStr.length());

            } else {

                charStr = dataStr.substring(start + 2, end);

            }

            char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。

            buffer.append(new Character(letter).toString());

            start = end;

        }

        return buffer.toString();

    }

}

简单点的

public static void main(String[] args) {

        String ss = "\u6570\u636e\u672a\u5f55\u5165";

        System.out.println(ss+"--");

        System.out.println(toUnicode("数据未录入"));

    }

    public static String toUnicode(String s)

    {

            String as[] = new String[s.length()];

            String s1 = "";

            for (int i = 0; i  s.length(); i++)

            {

                as[i] = Integer.toHexString(s.charAt(i)  0xffff);

                s1 = s1 + as[i]+"\t";

            }

            return s1;

    }

请教JAVA怎么将十六进制转换为字符串,多谢

private static String hexString = "0123456789ABCDEF";

public static void main(String[] args) {

    System.out.println(encode("中文"));

    System.out.println(decode(encode("中文")));

}

/*

 * 将字符串编码成16进制数字,适用于所有字符(包括中文)

 */

public static String encode(String str) {

    // 根据默认编码获取字节数组

    byte[] bytes = str.getBytes();

    StringBuilder sb = new StringBuilder(bytes.length * 2);

    // 将字节数组中每个字节拆解成2位16进制整数

    for (int i = 0; i  bytes.length; i++) {

    sb.append(hexString.charAt((bytes[i]  0xf0)  4));

    sb.append(hexString.charAt((bytes[i]  0x0f)  0));

    }

    return sb.toString();

}

 

/*

 * 将16进制数字解码成字符串,适用于所有字符(包括中文)

 */

public static String decode(String bytes) {

    ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);

    // 将每2位16进制整数组装成一个字节

    for (int i = 0; i  bytes.length(); i += 2)

    baos.write((hexString.indexOf(bytes.charAt(i))  4 | hexString

                    .indexOf(bytes.charAt(i + 1))));

    return new String(baos.toByteArray());

}

亲测可行,支持中文!!!

有用请记得采纳

「java十六进制中文」十六进制 java

在java中,如何将utf8 十六进制编码转换成汉字?

当在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO-8859-1标准编码能够轻易的实现,下面的代码实现了这一功能:

byte [] b;

String utf8_value;

utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据

b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡

String name = new String(b, "GB2312"); //转换成GB2312字符

在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。

下面的代码实现了这一功能:

ServletInputStream inStream = request.getInputStream(); //取HTTP请求流

int size = request.getContentLength(); //取HTTP请求流长度

byte[] buffer = new byte[size]; //用于缓存每次读取的数据

byte[] in_b = new byte[size]; //用于存放结果的数组

int count = 0;

int rbyte = 0;

while (count size) {

//循环读取

rbyte = inStream.read(buffer); //每次实际读取长度存于rbyte中

for(int i=0;irbyte;i++) {

in_b[count + i] = buffer[i];

}

count += rbyte;

}

在不知道流长度的情况下将输入流转换成字节数组 前面介绍了已知流长度的情况下的转换方法,那么当我们不知道流有多长时,也就是说不能确定转换后的字节数组有多大时,该怎么处理呢?笔者查看了JDK文档之后发现ByteArrayOutputStream有一个byte[] toByteArray()方法,该方法会自动创建一个字节数组,然后返回。于是就巧妙的用ByteArrayOutputStream来作中间过渡实现转换,其它处理跟上面所介绍已知长度的情况差不多。假设需要被转换的流已经放在inStream里了,我们可以用如下的代码实现这一功能:

ByteArrayOutputStream swapStream = new ByteArrayOutputStream();

byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据

int rc = 0;

while ((rc = inStream.read(buff, 0, 100)) 0) {

swapStream.write(buff, 0, rc);

}

byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果

你试着改写成自己需要的代码

JAVA如何将十六进制的代码转换成汉字。 例子:0x8754 转化成全角数字1

好像0x8754对应汉字好像不是1,你可以用这个试一试:

public class Test4

{

public static void main(String[] args)

{

System.out.println((char)(Integer.parseInt("8754", 16)));

System.out.println((char)0x8754);

}

}

Java中怎么表示八进制和十六进制?

八进制:int a=031;  //8进制,以数字0开始。

十六进制:int b=0x1B;  //16进制,以0x开始。

1、八进制数的表达方法:

如何表达一个八进制数呢?如果这个数是   876,我们可以断定它不是八进制数,因为八进制

中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进

数还是10进制数,都有可能。   所以规定,一个数如果要指明它采用八进制,必须在它前面

上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数的表达方法。   

2、十六进制数的表达方法   :

如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是

16进制或10进制。 16进制数必须以   0x开头。比如   0x1表示一个16进制数。而1则表示一个

进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字

0,而不是字母O)   。

关于java十六进制中文和十六进制 java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。