如何将下面字符串里面的十六二进制字符串转十进制编程十进制,而汉字不变

用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
获取中每个字符的十六进制值。
获取与十六进制字符串中的每个值对应的。
将十六进制 string 转换为。
将十六进制 string 转换为。
将数组转换为十六进制 string。
此示例输出 string 中的每个字符的十六进制值。首先,它将 string 分析为字符数组,然后对每个字符调用
以获取相应的数字值。最后,在 string 中将数字的格式设置为十六进制表示形式。
string input = "Hello World!";char[] values = input.ToCharArray();foreach (char letter in values){&&& // Get the integral value of the character.&&& int value = Convert.ToInt32(letter);&&& // Convert the decimal value to a hexadecimal value in string form.&&& string hexOutput = String.Format("{0:X}", value);&&& Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);}/* Output:&& Hexadecimal value of H is 48&&& Hexadecimal value of e is 65&&& Hexadecimal value of l is 6C&&& Hexadecimal value of l is 6C&&& Hexadecimal value of o is 6F&&& Hexadecimal value of&& is 20&&& Hexadecimal value of W is 57&&& Hexadecimal value of o is 6F&&& Hexadecimal value of r is 72&&& Hexadecimal value of l is 6C&&& Hexadecimal value of d is 64&&& Hexadecimal value of ! is 21 */
此示例分析十六进制值的 string 并输出对应于每个十六进制值的字符。首先,它调用
方法以获取每个十六进制值作为数组中的单个 string。然后调用
以将十六进制转换为表示为
的十进制值。示例中演示了用于获取对应于该字符代码的字符的两种不同方法。第一种方法是使用 ,它将对应于整型参数的字符作为 string 返回。第二种方法是将 int 显式转换为 。
string hexValues = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";string[] hexValuesSplit = hexValues.Split(' ');foreach (String hex in hexValuesSplit){&&& // Convert the number expressed in base-16 to an integer.&&& int value = Convert.ToInt32(hex, 16);&&& // Get the character corresponding to the integral value.&&& string stringValue = Char.ConvertFromUtf32(value);&&& char charValue = (char)&&& Console.WriteLine("hexadecimal value = {0}, int value = {1}, char value = {2} or {3}",&&&&&&&&&&&&&&&&&&&&&&& hex, value, stringValue, charValue);}/* Output:&&& hexadecimal value = 48, int value = 72, char value = H or H&&& hexadecimal value = 65, int value = 101, char value = e or e&&& hexadecimal value = 6C, int value = 108, char value = l or l&&& hexadecimal value = 6C, int value = 108, char value = l or l&&& hexadecimal value = 6F, int value = 111, char value = o or o&&& hexadecimal value = 20, int value = 32, char value =&& or&&& hexadecimal value = 57, int value = 87, char value = W or W&&& hexadecimal value = 6F, int value = 111, char value = o or o&&& hexadecimal value = 72, int value = 114, char value = r or r&&& hexadecimal value = 6C, int value = 108, char value = l or l&&& hexadecimal value = 64, int value = 100, char value = d or d&&& hexadecimal value = 21, int value = 33, char value = ! or !*/
此示例演示了将十六进制 string 转换为整数的另一种方法,即调用
string hexString = "8E2";int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);Console.WriteLine(num);//Output: 2274
下面的示例演示如何使用
方法将十六进制 string 转换为。
string hexString = "";uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);byte[] floatVals = BitConverter.GetBytes(num);float f = BitConverter.ToSingle(floatVals, 0);Console.WriteLine("float convert = {0}", f);// Output: 200.0056&&&&&&&&&&&
下面的示例演示如何使用
类将数组转换为十六进制字符串。
byte[] vals = { 0x01, 0xAA, 0xB1, 0xDC, 0x10, 0xDD };string str = BitConverter.ToString(vals);Console.WriteLine(str);str = BitConverter.ToString(vals).Replace("-", "");Console.WriteLine(str);/*Output:& 01-AA-B1-DC-10-DD& 01AAB1DC10DD */
阅读(3266)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_084075',
blogTitle:'如何:在十六进制字符串与数值类型之间转换(C# 编程指南)',
blogAbstract:'
最近,由于要跟其它程序员以前用C++编写的程序之间进行通信,做了一些接口程序,用到了一些类型转换和编码处理的东西。今天,对方要求将字节数组转换成十六进制的字符串表示形式,然后放在xml文件中发送,网上一查五花八门,办法还真多。最终还是觉得MSDN上的方法是正解。希望大家以后用到时,不要误入歧途。
以下示例演示如何执行下列任务:
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}查看: 819|回复: 19
如何将附件中的16进制编码的字符转换成汉字
阅读权限20
在线时间 小时
请教下论坛的大师们,如何将附件中的16进制编码的字符转换成汉字?有没有可能写一个自定义函数来达到目的?
(6.85 KB, 下载次数: 26)
14:15 上传
点击文件名下载附件
阅读权限20
在线时间 小时
期盼大师出手相助,多谢了啦!
阅读权限95
在线时间 小时
本帖最后由 香川群子 于
10:17 编辑
试一试这个自定义函数:
每4位一组的16进制数,按本机代码页转换为字符。
如含有X'前导字符则截取有效字符后运算。
Function f(txt)
& & If InStr(txt, &X'&) Then txt = Mid(txt, 3, Int((Len(txt) - 3) / 4) * 4) Else txt = Left(txt, Int(Len(txt) / 4) * 4)
& & For i = 1 To Len(txt) Step 4
& && &&&f = f & Chr(&&H& & Mid(txt, i, 4))
& & Next
End Function复制代码
阅读权限20
在线时间 小时
香川群子 发表于
试一试这个自定义函数:
每4位一组的16进制数,按本机代码页转换为字符。
如含有X'前导字符则截取有效字符 ...
谢谢香川大师的出手帮助,刚才用该自定义函数试了下,发现没有达到目的,出来的结果的汉子部分是乱码,拼音字母好像也有误,如下:
ZagZiin 紶蹇楀己
L,oga 潕绾㈢嚂
HagJaqag榛勫缓寮
Ce,ag闄堝垰
Fn,inig鍐?缓骞
W,hmn鍚存洐鏁
KagLnu ahrn 尅鍏板崕
阅读权限30
在线时间 小时
本帖最后由 sz_wap 于
10:00 编辑
hnyylx 发表于
谢谢香川大师的出手帮助,刚才用该自定义函数试了下,发现没有达到目的,出来的结果的汉子部分是乱码,拼 ...
数据为UTF-8编码
阅读权限30
在线时间 小时
& & & & & & & &
(14.3 KB, 下载次数: 35)
13:35 上传
点击文件名下载附件
阅读权限20
在线时间 小时
sz_wap 发表于
多谢sz_wap老师的帮助,达到目的了!万分感谢! 回头再好好研究下你的代码!
阅读权限95
在线时间 小时
sz_wap 发表于
你的转换函数太复杂了。也许是因为你为了通用性而过多地考虑了其它异常处理。
我看懂了你的转换原理,重新写了个转换函数非常简单:Function ChrU$(txt$) 'Change UTF To Char
& & 'UTF码字符串转为Chr或Chrw字符
& & For i = 1 To Len(txt)
& && &&&t = Val(&&H& & Mid(txt, i, 2)) '每隔2位提取16进制值并转为10进制
& && &&&If t & 128 Then ChrU = ChrU & Chr(t): i = i + 1 Else ChrU = ChrU & CHN(Mid(txt, i, 6)): i = i + 5
& && &&&'如&128则直接转为Chr字符,否则提取连续3组的2个16进制共6位码值转换为ChrW字符
& & Next
End Function
Function CHN$(UTF$) 'While t&128 Change To Chinese
& & '连续6个16进制码 转为1个ChrW字符的函数
& & Dim i&, n&, s$, t$
& & For i = 1 To 6 Step 2 '2个1组计算
& && &&&t = DecToBin(Val(&&H& & Mid(UTF, i, 2))) '16进制转10进制再转2进制字符t
& && &&&s = s & Mid(t, InStr(t, &0&) + 1) '提取第1个&0&以后的有效字符并合并为二进制s
& & Next
& & CHN = ChrW(BinToDec(s)) '有效二进制s转为10进制并转为ChrW字符
End Function
Function DecToBin$(Dec&) '10进制转2进制
& & Do
& && &&&DecToBin = Dec Mod 2 & DecToBin: Dec = Dec \ 2
& & Loop While Dec
End Function
Function BinToDec&(Bin$) '2进制转10进制
& & For i = Len(Bin) - 1 To 0 Step -1
& && &&&BinToDec = BinToDec + Mid(Bin, Len(Bin) - i, 1) * 2 ^ i
& & Next
End Function复制代码以上。
阅读权限95
在线时间 小时
本帖最后由 香川群子 于
23:35 编辑
sz_wap 发表于
再次研究了一下UTF码转换规律,发现更简单的算法:Function ChrU$(txt$) 'Change UTF To Char
& & For i = 1 To Len(txt)
& && &&&t = Val(&&H& & Mid(txt, i, 2))
& && &&&If t & 128 Then ChrU = ChrU & Chr(t): i = i + 1 Else ChrU = ChrU & ChrW(Val(&&H& & Mid(txt, i + 1, 1)) * 4096 + (Val(&&H& & Mid(txt, i + 2, 2)) - 128) * 64 + Val(&&H& & Mid(txt, i + 4, 2)) - 128): i = i + 5
& & Next
End Function复制代码6位16进制转ChrW字符的具体计算过程如下:
& & t1 = Val(&&H& & Mid(txt, i + 1, 1))& && && & '取第1组的第2个16进字符转为10进制数 (第1个设别字符e无需使用)
& & t2 = Val(&&H& & Mid(txt, i + 2, 2)) - 128 '取第2组的2个16进制字符转10进制数并减去128
& & t3 = Val(&&H& & Mid(txt, i + 4, 2)) - 128 '取第3组的2个16进制字符转10进制数并减去128
& & t4 = t1 * 4096 +&&t2 * 64 + t3& && && && &&&'t1乘以4096+t2乘以64+t3得到该UTF-8码的AscW码值。
& & t5 = ChrW(t4) 这样就可以用ChrW函数转换为有效字符了。
阅读权限30
在线时间 小时
& & & & & & & &
香川群子 发表于
再次研究了一下UTF码转换规律,发现更简单的算法:6位16进制转ChrW字符的具体计算过程如下:
& & t1 = ...
附件代码是以前从网上找的
主要处理形如:%E6%B5%8B%E8%AF%95abc123之类的Url字符串
其中包含汉字的UTF码和直接显示的英文、数字等,所以多了一些判断
转码过程看的头晕,直接拿来主义了
玩命加载中,请稍候
玩命加载中,请稍候
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!
本站特聘法律顾问:徐怀玉律师 李志群律师
Powered by8 相关软件 12KB/英文/5.0 303KB/英文/5.0 8KB/英文/5.0 72KB/中文/9.2 268KB/中文/2.3顶好评:50%踩坏评:50请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
15.8M/中文/4.6
303M/中文/1.7
23.8M/中文/8.5
11.2M/中文/6.8
651.2M/中文/3.8
41.1M/英文/6.5
593KB/中文/10.0
本工具能把字符串(包括汉字)转换成10进制或16进制的ANSI码,以空格分开,另外能把上述格式的10进制或16进制的ANSI码转换成字符串(包括汉字)。
自己归纳的一些知识:
1.普通字符只占一个字符,即ASCII码,取值0~0x80,即0~128。(实质有用的只有0x20~0x7E,即32~126)
2.汉字占两个字符,分成高位和低位,并且其高位GetAt()后必定小于0已作区分是否普通ASCII的标志(实质高位即从0x81=129开始递增,大于128则减去256确保落在-127~128),而经过观察,汉字的低位实质从0x40(即等于64,低位不会出现0~63)开始递增。
3.自己归纳的ANSI字符存放规律:
0x21~0x80:普通字符。
0xFE:不常用中文。
0xA1A1~0xA9EF:特殊字符(全角字符、数学符号、罗马希腊的字母、日文的假名)。
0xAA40~0xFE4F:常用中文。
4.在以ANSI为的程序中,按住Alt键再按下小键盘上对应的十进制ANSI码,输入完毕后放开Alt,该字符就会出现了。(如果仍然没反应,请先打开中文输入法再执行此操作。)
5.windows记事本(.txt文件)、广大论坛、和QQ里都默认以ANSI码输入,即可按上述方法用Alt输入字符。例如:在论坛的回复里按住Alt再输入43337,就会出现一个特殊字符。
ANSI Converter-ANSI码转换器
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。字符串、十六进制、byte数组互转
import java.io.ByteArrayOutputS
public class HexUtil {
* @param args
public static void main(String[] args) {
String str = &&;
String hexStr = encode(str);
System.out.println(&字符串-&十六进制:& + hexStr);
System.out.println(&十六进制-&字符串:& + decode(hexStr));
System.out.println(&十六进制-&byte数组:& + HexString2Bytes(hexStr));
public static String stringToHexString(String strPart) {
String hexString = &&;
for (int i = 0; i & strPart.length(); i++) {
int ch = (int) strPart.charAt(i);
String strHex = Integer.toHexString(ch);
hexString = hexString + strH
return hexS
private static String hexString = &ABCDEF&;
* 将字符串编码成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. 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());
private static byte uniteBytes(byte src0, byte src1) {
byte _b0 = Byte.decode(&0x& + new String(new byte[] { src0 }))
.byteValue();
_b0 = (byte) (_b0 && 4);
byte _b1 = Byte.decode(&0x& + new String(new byte[] { src1 }))
.byteValue();
byte ret = (byte) (_b0 | _b1);
public static byte[] HexString2Bytes(String src) {
byte[] ret = new byte[6];
byte[] tmp = src.getBytes();
for (int i = 0; i & 6; ++i) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。C语言将字符串转换成对应的数字(十进制、十六进制)_Linux编程_Linux公社-Linux系统门户网站
你好,游客
C语言将字符串转换成对应的数字(十进制、十六进制)
来源:Linux社区&
作者:wawlian
问题1:讲一个十进制数字的字符串表示转换成对应的整数。举例:将“1234”转换成整数1234.&int&atoi(char&s[])&{&&&&&int&i;&&&&&int&n&=&0;&&&&&for&(i&=&0;&s[i]&&=&'0'&&&&s[i]&&=&'9';&++i)&&&&&{&&&&&&&&&n&=&10&*&n&+&(s[i]&-&'0');&&&&&}&&&&&return&n;&}&
&&& 问题2:将一个十六进制数的字符串表示形式转换成对应的整数。所谓的十六进制数的字符串形式是指字符串只包含'0'-'9'或者'a'-'z'或者'A'-'Z',前导“0x”或者“0X”是否出现都可以。
&&& 要解决这个问题,还需要一个将大写字母转换成小写字母的工具函数:&int&tolower(int&c)&{&&&&&if&(c&&=&'A'&&&&c&&=&'Z')&&&&&{&&&&&&&&&return&c&+&'a'&-&'A';&&&&&}&&&&&else&&&&&{&&&&&&&&&return&c;&&&&&}&}&
&&& 下面是转换函数:&int&htoi(char&s[])&{&&&&&int&i;&&&&&int&n&=&0;&&&&&if&(s[0]&==&'0'&&&&(s[1]=='x'&||&s[1]=='X')) //判断是否有前导0x或者0X&&&&{&&&&&&&&&i&=&2;&&&&&}&&&&&else&&&&&{&&&&&&&&&i&=&0;&&&&&}&&&&&for&(;&(s[i]&&=&'0'&&&&s[i]&&=&'9')&||&(s[i]&&=&'a'&&&&s[i]&&=&'z')&||&(s[i]&&='A'&&&&s[i]&&=&'Z');++i)&&&&&{ & &&&&&&&&if&(tolower(s[i])&&&'9') &&&&&&&&{&&&&&&&&&&&&&n&=&16&*&n&+&(10&+&tolower(s[i])&-&'a');&&&&&&&&&}&&&&&&&&&else&&&&&&&&&{&&&&&&&&&&&&&n&=&16&*&n&+&(tolower(s[i])&-&'0');&&&&&&&&&}&&&&&}&&&&&return&n;&}&
相关资讯 & & &
& (07月31日)
& (07月15日)
& (07月22日)
& (05月26日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 java 字符串转十进制 的文章

 

随机推荐