字符串/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 ...
随机推荐
- 解决metasploit的module load fail
解决metasploit的module load fail 在exploits文件夹下面新建一个文件夹test 把你要用的rb文件放进去 reload_all 就行了
- 题解0007:小木棍(P1120)
(错误记录) 题目链接:https://www.luogu.com.cn/problem/P1120 题目描述:几根同样长的木棍,小冥把它们随意砍成了n段: 然后他又吃饱了撑的想把木棍拼上: 但是这个 ...
- bzoj4182/luoguP6326 Shopping(点分治,树上背包)
bzoj4182/luoguP6326 Shopping(点分治,树上背包) bzoj它爆炸了. luogu 题解时间 如果直接暴力背包,转移复杂度是 $ m^{2} $ . 考虑改成点分治. 那么问 ...
- springcloud断路器的作用?
当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应) 断路器有完全打开状态:一段时间内 达到一定 ...
- 匿名内部类编译生成的class文件
一.问题描述 跳槽到的新公司,相比原来的公司,软件开发非常不规范,经常各种坑.项目部署到生产现场之后,出现问题,我在修改之后编译生成class文件,然后将class文件发给现场的技术支持,技术支持将c ...
- Canvas将图片转换成base64形式展示的常见问题及解决方案
导航1:https://blog.csdn.net/weixin_30668887/article/details/98822699 导航2:https://stackoverflow.com/que ...
- 什么是 YAML?
YAML 是一种人类可读的数据序列化语言.它通常用于配置文件. 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加 结构化,而且更少混淆.可以看出 YAML 具有分层配置数据 ...
- mac-brew
brew search [TEXT|/REGEX/] 搜索软件 brew (info|home|options) [FORMULA...] 查询软件信息 brew install FORMULA... ...
- python学习笔记(八)——文件操作
在 windows 系统下,我们通过 路径+文件名+扩展名的方式唯一标识一个文件,而在 Linux 系统下通过 路径+文件名唯一标识一个文件. 文件分类:文件主要可以分为文本文件和二进制文件,常见的如 ...
- 9_根轨迹_Part3_分离点/汇合点和根的性质