「java十六进制中文」十六进制 java
本篇文章给大家谈谈java十六进制中文,以及十六进制 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中如何将一组16进制转换为明文
- 2、请教JAVA怎么将十六进制转换为字符串,多谢
- 3、在java中,如何将utf8 十六进制编码转换成汉字?
- 4、JAVA如何将十六进制的代码转换成汉字。 例子:0x8754 转化成全角数字1
- 5、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中,如何将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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-22,除非注明,否则均为
原创文章,转载请注明出处。