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. Centos7 使用Docker安装rocket.chat聊天工具

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 下载安装 Rocket.Chat 目前最新的版本为 4.0.1,可以通过手动或者容器的方式安装.这里我推荐使用容器,部署过程会方便不少. 如果要用容 ...

  2. 羽夏笔记——Hook攻防基础

    写在前面   本笔记是由本人独自整理出来的,图片来源于网络.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你 ...

  3. 【网鼎杯】jocker--部分代码加壳逆向处理

    Main函数,用户输入flag,长度为24位 Wrong函数进行了简单的异或操作 Omg函数进行异或操作,根据提示来看应该是假check Encrypt无法生成伪代码 发现有加壳以及自修改,下断点动调 ...

  4. docker专题 从入门到放弃

    1.docker是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚 ...

  5. Kafka 与传统 MQ 消息系统之间有三个关键区别?

    (1).Kafka 持久化日志,这些日志可以被重复读取和无限期保留 (2).Kafka 是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过 复制数据提升容错能力和高可用性 (3).Kafk ...

  6. ZAB 和 Paxos 算法的联系与区别?

    相同点: 1.两者都存在一个类似于 Leader 进程的角色,由其负责协调多个 Follower 进程的运行 2.Leader 进程都会等待超过半数的 Follower 做出正确的反馈后,才会将一个提 ...

  7. Linux下安装jdk-7u67-linux-x64.rpm

    1.新建一个jdk的安装目录,我这里是在/usr/下新建了java目录,我是使用WinSCP创建的文件夹,把 jdk-7u80-linux-x64.tar.gz压缩包从本地Windows系统中拖到Li ...

  8. linux发布常用命令

    一.linux发布常用命令 //启动Tomcat sh /opt/apache-tomcat-8.5.29/bin/startup.sh //停止tomcat sh /opt/apache-tomca ...

  9. tcp粘包问题原因及解决办法

    1.粘包概念及产生原因 1.1粘包概念: TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾. 粘包可能由发送方造成,也可能由接收方造成. ...

  10. web workers是什么,为什么我们需要web workers?

    请看下面的for循环代码,它将运行超过百万次. function SomeHeavyFunction() { for (i = 0; i < 10000000000000; i++) { x = ...