字符串/16进制/ASCII码的转换
1 /// <字符串转16进制格式,不够自动前面补零>
2 /// 假设文本框里面填写的是:01 02 03 04 05 06
3 /// Str获取的是01 02 03 04 05 06 是字符串
4 /// 需要将01转为0x01,02转为0x02
5 /// 首先默认把文本框每隔两个字符作为一个16进制数
6 /// 假设文本框中是010203040506(偶数个数据),则01,02,03,04,05,06分别作为16进制
7 /// 如果文本框中的字符个数是奇数个1115268,则默认先把前面每隔两个作为一个16进制数,最后一个数前面补零0x11,0x15,0x26,0x08
8 /// </summary>
9 /// <param name="hexString"></param>
10 /// <returns>返回字符数组</returns>
11 public static byte[] strToToHexByte(String hexString) {
12 int i;
13 hexString = hexString.Replace(" ", "");//清除空格
14 if ((hexString.Length % 2) != 0)//奇数个
15 {
16 byte[] returnBytes = new byte[(hexString.Length + 1) / 2];
17 try {
18 for (i = 0; i < (hexString.Length - 1) / 2; i++) {
19 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
20 }
21 returnBytes[returnBytes.Length - 1] = Convert.ToByte(hexString.Substring(hexString.Length - 1, 1).PadLeft(2, '0'), 16);
22 } catch {
23 MessageBox.Show("含有非16进制字符", "提示");
24 return null;
25 }
26 return returnBytes;
27 } else {
28 byte[] returnBytes = new byte[(hexString.Length) / 2];
29 try {
30 for (i = 0; i < returnBytes.Length; i++) {
31 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
32 }
33 } catch {
34 MessageBox.Show("含有非16进制字符", "提示");
35 return null;
36 }
37 return returnBytes;
38 }
39 }
40 /// <summary>
41 /// 将字符串s通过ASCII码转换为16进制字符串
42 /// </summary>
43 /// <param name="s"></param>
44 /// <param name="encode"></param>
45 /// <returns>十六进制字符串</returns>
46 private static string result;//string转16进制的结果
47 public static string stringToHexString(string s, Encoding encode) {
48 byte[] b = encode.GetBytes(s);//按照指定编码将string编程字节数组
49 result = string.Empty;
50 for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符
51 {
52 result += Convert.ToString(b[i], 16);
53 }
54 return result;
55 }
56
57 /// <summary>
58 /// 将一条十六进制字符串转换为ASCII
59 /// </summary>
60 /// <param name="hexstring">一条十六进制字符串</param>
61 /// <returns>返回一条ASCII码</returns>
62 public static string hexStringToASCII(string hexstring) {
63 byte[] bt = hexStringToBinary(hexstring);
64 string lin = "";
65 for (int i = 0; i < bt.Length; i++) {
66 lin = lin + bt[i] + " ";
67 }
68 string[] ss = lin.Trim().Split(new char[] { ' ' });
69 char[] c = new char[ss.Length];
70 int a;
71 for (int i = 0; i < c.Length; i++) {
72 a = Convert.ToInt32(ss[i]);
73 c[i] = Convert.ToChar(a);
74 }
75 string b = new string(c);
76 return b;
77 }
78 /// <summary>
79 /// 16进制字符串转换为二进制数组
80 /// </summary>
81 /// <param name="hexstring">用空格切割字符串</param>
82 /// <returns>返回一个二进制字符串</returns>
83 public static byte[] hexStringToBinary(string hexstring) {
84 string[] tmpary = hexstring.Trim().Split(' ');
85 byte[] buff = new byte[tmpary.Length];
86 for (int i = 0; i < buff.Length; i++) {
87 buff[i] = Convert.ToByte(tmpary[i], 16);
88 }
89 return buff;
90 }
字符串/16进制/ASCII码的转换的更多相关文章
- 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息
最近工作需要在用ipmitool查询服务器硬件信息.ipmitool查询硬件信息 比如电源,使用命令: 获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00: 获取PSU1信息:I ...
- C++ 10进制, 16进制, ASCII码, 单字节与多字节的相互转换
这些简单的转换是用的比较频繁的, 因此将这些功能全部封装在一个类中 头文件 #pragma once #include <stdlib.h> #include <string> ...
- Java Hex 16进制的 byte String 转换类
package mobi.dzs.android.util; import java.util.Locale; /** * 16进制值与String/Byte之间的转换 * @author Jerry ...
- python中2进制、10进制、16进制等之间的转换
10转2: bin(8) # '0b1000' 2转10: int( 10转16: hex(15) # '0xf' 16转10: int( 2进制和16进制中间通过转10进制可以相互转换 from b ...
- 将16进制unsigned char数组转换成整数
/** * 将unsigned char数组转换成long long数值 * {0x00 0x00 0x20 0x00}转换之后得到8192 * * @param str 数组 * @param le ...
- ASCII码与16进制的互相转换(表)
所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...
- C# 16进制与字符串、字节数组之间的转换(转)
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToSt ...
- C# 16进制与字符串、字节数组之间的转换 (转载)
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine(, )); //十进制转八进制 Console.WriteLine(, )); / ...
- C# 16进制与字符串、字节数组之间的转换
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串//十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToStrin ...
随机推荐
- vim设置自动添加头部注释
#自己改了改vim开头文件,如下图# 友友们可以直接修改·SetTitle() if v:lang =~ "utf8$" || v:lang =~ "UTF-8$&quo ...
- 部署 Nginx +uwsgi+centos7+django+supervisor 项目
部署CRM项目 前言 使用软件 nginx 使用nginx是为了它的反向代理功能,项目会通过Django+uWSGI+Nginx进行服务器线上部署. uWSGI python web服务器开发使用WS ...
- Colbalt Strike之CHM木马
一.命令执行(calc)木马生成 1.生成木马 首先创建一个根目录,文件名为exp 在文件夹里创建两个目录和一个index.html文件 在两个目录里分别创建txt文件或html文件 index.ht ...
- FastDFS 原理、安装、使用
介绍 技术论坛: http://bbs.chinaunix.net/forum-240-1.html FAQ:http://bbs.chinaunix.net/thread-1920470-1-1.h ...
- 解释基于XML Schema方式的切面实现?
在这种情况下,切面由常规类以及基于XML的配置实现.
- JVM组成结构以及各部分的功能
Java虚拟机主要分为以下五个区: 一.方法区(METHOD AREA): 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型 ...
- 本地连接MySQL云服务器步骤与解决方案
云服务器:aliyun MySQL 版本:mysql8 第一步首先,检查云服务器的 网络与安全 -> 安全组 是否开放了(MySQL)3306端口 第二步,登陆云服务器上的MySQL,检查需要远 ...
- js 遮罩效果
-------------------------------tipswindown.js------------------------------ ///--------------------- ...
- <img> 标签 图片加载失败时候处理方案
应用场景 在开发中,经常遇到一种情况,数据库不存在图片地址,或者存在图片地址,但图片已经被删除,这个时候会出现加载失败情况.提供以下解决方案 解决方案 在 img 标签 加上onerror=" ...
- 首次写iPad布局感想(H5)
一直做前端工作,却从来没有开发过平板的项目,想来也是有遗憾的,孰知,新公司的第二个项目就是要适配平板,刚开始是懵的,对于兼容,感觉是自己的短板,但庆幸的是这一版只需要兼容iOS系统就可以. 那我现在就 ...