十六进制转汉字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十六进制转汉字相关的知识,希望对你有一定的参考价值。
这是存在Linux utf-8 hbase中的汉字字节
\xE6\x9D\x83\xE5\xA8\x81\xE6\x8C\x87\xE5\x8D\x97 (正确应为“权威指南“)
谁帮我在java中转成汉字 告诉我是如何转的 谢谢了
(byte)0xE5,(byte)0xA8,(byte)0x81, // 威
(byte)0xE6,(byte)0x8C,(byte)0x87, // 指
(byte)0xE5,(byte)0x8D,(byte)0x97 ; // 南
String s;
try
s=new String(bn,"utf-8"); // 源码制 utf-8
catch(Exception e)
s="error";
// 显示串 s, 的确是“权威指南”
// utf-8 码长是不定的,原英文等ASCII码只要一字节,对西方有利,
拉丁文、阿拉伯文等 两字节,
而汉字等文字则为三字节,相比Unicode变长了。
。。。
所以,汉字串“权威指南”则为3X4=12个字节了,
百度下:
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
问题都答到位了,若满意请及时采纳!! 参考技术A 汉字为双字节字符,即两组十六进制数表示一个汉字,而且前一个字符的ASC码大于 127。
给个转换为字符(包括汉字)Delphi 的例子:
procedure TForm1.Button1Click(Sender: TObject);
function DeleteSpace(ss: String): String;
var //删除字符串中所有的空格
i: Integer;
begin
Result := ss;
i := 1;
while i <= Length(Result) do begin
if Result[i] = ' ' then Delete(Result, i, 1)
else Inc(i);
end;
end;
procedure GetData(const ss: String; var dt: Array of Integer);
var
i,j: Integer;
sb: String;
begin
for i := Low(dt) to High(dt) do begin
j := 2 * i + 1;
sb := ss[j] + ss[j + 1];
dt[i] := StrToInt('$' + sb);
end;
end;
var
ss,sb,rt: String;
ac: Byte;
id,ct: Integer;
dt: Array of Integer;
begin
Edit2.Text := '';
ss := DeleteSpace(Edit1.Text); //去掉所有空格
ct := Length(ss);
if (ct mod 2) <> 0 then begin //首位<10
ss := '0' + ss;
Inc(ct);
end;
if ss[2] = 'x' then begin //考虑 0x878ABD7DB7CF 格式
Delete(ss, 1, 2);
Dec(ct, 2);
end;
SetLength(dt, ct div 2);
GetData(ss, dt);
rt := '';
if ct > 0 then begin
id := Low(dt);
while id <= High(dt) do begin
ac := dt[id];
if ac < 128 then begin // 单字节字符
sb := Chr(ac);
Inc(id);
end else begin //双字节字符
sb := Chr(ac) + Chr(dt[id + 1]);
Inc(id, 2);
end;
rt := rt + sb;
end;
end;
Edit2.Text := rt;
end;
是否可以解决您的问题?追问
为何这四字却有12个字节 一直不知道这到底是什么格式的
以上是关于十六进制转汉字的主要内容,如果未能解决你的问题,请参考以下文章
c语言怎么字符串和16进制转码 汉字转16进制如“我”转换成 “0xe68891”; 16进制转汉字“0xe68891”转 我