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码的转换的更多相关文章

  1. 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息

    最近工作需要在用ipmitool查询服务器硬件信息.ipmitool查询硬件信息 比如电源,使用命令: 获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00: 获取PSU1信息:I ...

  2. C++ 10进制, 16进制, ASCII码, 单字节与多字节的相互转换

    这些简单的转换是用的比较频繁的, 因此将这些功能全部封装在一个类中 头文件 #pragma once #include <stdlib.h> #include <string> ...

  3. Java Hex 16进制的 byte String 转换类

    package mobi.dzs.android.util; import java.util.Locale; /** * 16进制值与String/Byte之间的转换 * @author Jerry ...

  4. 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 ...

  5. 将16进制unsigned char数组转换成整数

    /** * 将unsigned char数组转换成long long数值 * {0x00 0x00 0x20 0x00}转换之后得到8192 * * @param str 数组 * @param le ...

  6. ASCII码与16进制的互相转换(表)

    所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...

  7. C# 16进制与字符串、字节数组之间的转换(转)

    1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串   //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToSt ...

  8. C# 16进制与字符串、字节数组之间的转换 (转载)

    1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine(, )); //十进制转八进制 Console.WriteLine(, )); / ...

  9. C# 16进制与字符串、字节数组之间的转换

    1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串//十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToStrin ...

随机推荐

  1. Idea进行spring-boot-devtools热部署以及不生效的问题解决

    实现的方式有两种: spring-boot-devtools spring Loaded 我在此只介绍spring-boot-devtools的使用方法: 1.在pom中直接引入依赖 <depe ...

  2. contos 配置国内yum源

    contos配置国内yum源 前言 rpm管理软件包的命令,很难用,需要手动解决以来关系,所以最好用 yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution ...

  3. Rabbit MQ 怎么保证可靠性、幂等性、消费顺序?

    RabbitMQ如何保证消息的可靠性 RabbitMQ消息丢失的三种情况 生产者弄丢消息时的解决方法 方法一:生产者在发送数据之前开启RabbitMQ的事务(采用该种方法由于事务机制,会导致吞吐量下降 ...

  4. Spring AOP统一日志 全量日志

    Spring AOP 切面@Around注解的具体使用 lichuangcsdn 2019-02-19 23:21:36 63936 收藏 61分类专栏: Spring 文章标签: Spring AO ...

  5. Idea集成CSSO插件压缩css文件

    首先需要本地已安装node环境,并且csso-cli已通过npm安装到本地目录,只要能找到就行. 1. 打开Settings配置,确认图中的 File Watchers 插件是否已存在,如果不存在,去 ...

  6. mybatis学习一:基于xml与注解配置入门实例与问题

    注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...

  7. SpringBoot DevTools 的用途是什么?

    SpringBoot 开发者工具,或者说 DevTools,是一系列可以让开发过程变得简便的工具.为了引入这些工具,我们只需要在 POM.xml 中添加如下依赖: 1 <dependency&g ...

  8. ThreadLocal 是什么?有什么用?

    ThreadLocal 是一个本地线程副本变量工具类.主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的 ...

  9. linux文本编辑器vim详解

    vim 1.打开文件 vim [option] - file... 打开文件 +# 打开文件后,让光标处于第#行的行首 +/字符串 打开文件后,光标处于第一个被匹配到字符串的行首 -b file 二进 ...

  10. 集合流之“将List<Integer>转为String并用逗号分割”

    1.使用[流+Collectors]转换 import java.util.ArrayList; import java.util.List; import java.util.stream.Coll ...