1.对于通讯协议的十六进制数值进行简单转换

//二进制转十进制
Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32("111101", 2));
//八进制转十进制
Console.WriteLine("八进制 44 的十进制表示: "+Convert.ToInt32("44", 8));
//十六进制转十进制
Console.WriteLine("十六进制 CC的十进制表示: "+Convert.ToInt32("CC", 16));    /*比较常用*/

//十进制转二进制
Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));
//十进制转八进制
Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));
//十进制转十六进制
Console.WriteLine("十进制166的十六进制表示: "+Convert.ToString(166, 16));

2.对于通信串口中经常要用到十六进制的格式转换

/// <summary>
/// 十进制转为8位的二进制
/// </summary>
/// <param name="source">源十进制数据</param>
/// <returns>八位的二进制数</returns>
public static string Get10Turn8Bits(int source)
{
    string _2BitStringSource = Convert.ToString(source, 2);
    string _2BitStringRes = "";
    for (int i = 0; i < 8 - _2BitStringSource.Length; i++)
    {

//不满8位就补零
        _2BitStringRes += "0";
    }
    _2BitStringRes = _2BitStringRes + _2BitStringSource;
    return _2BitStringRes;
}

// <summary>
/// String 转 Hex
/// </summary>
/// <param name="str">原始的string数据:FF FF 00 00 08</param>
/// <returns>返回hex字节数组</returns>
public static byte[] GetHexValue(string str)
{
     string[] sourceStr = str.Split(' ');
     byte[] covertHexByte = new byte[sourceStr.Length];
     try
     {
         for (int i = 0; i < sourceStr.Length; i++)
         {
             covertHexByte[i] = (byte)(int.Parse(sourceStr[i], System.Globalization.NumberStyles.HexNumber)); ;
         }
     }
     catch

{  }

return covertHexByte;
}

/// <summary>
/// 将4位的十六进制转化为5位十进制数
/// </summary>
/// <returns>五位十进制数</returns>
static public string Convert5bitDec(string inputStr)
{
       string outputStr = "";
       try
       {
             for (int i = 0; i < inputStr.Length; i = i + 4)
            {
                 outputStr += Convert.ToInt32(inputStr.Substring(i, 4), 16).ToString("00000");
            }
        }
       catch (Exception){ }

return outputStr;
}

/// <summary>
/// 字符串转16进制字节数组
/// </summary>
/// <param name="hexString"></param>
 /// <returns></returns>
        private static byte[] strToToHexByte(string hexString)
        {
             hexString = hexString.Replace(" ", "");
           if ((hexString.Length % 2) != 0)
                 hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
         }

/// <summary>
/// 将两位ASCII码(一个字节的十六机制)转为十进制数
/// </summary>
/// <param name="inputStr"></param>
/// <returns></returns>
public static string _2bitAsciiConvertDec(string inputStr)
{
         string outputStr = "";
         try
        {
             for (int i = 0; i < inputStr.Length; i = i + 2)
             {
                   outputStr += (char)Convert.ToInt32(inputStr.Substring(i,2),16);
             }
        }
        catch (Exception) {  }

return outputStr;
}

C#串口通讯中常用的16进制的字节转换的更多相关文章

  1. JavaScript中字符串与16进制之间的转换

    一.字符串转换为16进制 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  2. Java中char转为16进制

    Java中char转为16进制 char a = '0'; String hexStr = Integer.toHexString(a); System.out.println(hexStr);

  3. Java中字符串转为16进制表示

    Java中字符串转为16进制表示 String str = "鲸"; char[] chars = "0123456789ABCDEF".toCharArray ...

  4. bgcolor RGB 和16进制之间的转换,16进制转RGB,源码

    <p>bgcolor RGB 和16进制之间的转换,16进制转RGB,源码例如:<br /> 输入 201,255,201 转换成 #C9FFC9</p> < ...

  5. Java中byte与16进制字符串的互换原理

    我们都知道Java中的byte是由8个bit组成的,而16进制即16中状态,它是由4个bit来表示的,因为24=16.所以我们可以把一个byte转换成两个用16进制字符,即把高4位和低4位转换成相应的 ...

  6. Java中byte与16进制字符串的互相转换

    * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...

  7. delphi 中字符串与16进制、10进制转换函数

      //字符串转成16进制代码function strToHexStr(str:string):string;varc:char;ss:string;i:integer;beginwhile str& ...

  8. [转]Java中byte与16进制字符串的互相转换

    Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...

  9. Guid和Oracle中16进制字符的转换

    我们知道在Oracle中存的guid是16进制字符串,而在我们的C#代码中存的是guid对象,这样我会就要进行转换, 下面给出了两者进行转换的方法: public class Guid2RawProc ...

随机推荐

  1. list<?>转换成 对应的 class

    项目中用到的,list转换成bean.因为查询出来的数据用list 泛型接收,要返回 实体对象.所以需要对应转换. 主要用到的技术:反射. 上代码: public static <T> L ...

  2. es学习-基础增删改查

    创建库 插入数据 修改文档: 查询文档: 删除文档:

  3. javascript总结50:认识instanceof 与 原型链

    1 instanceof: 1.1 普通使用下: 判断一个对象是否是某个构造函数的实例: 语法 : 对象 instanceof 函数 是则返回true,不是则返回false. console.log( ...

  4. eclipse 导出可执行jar文件

    step1: step2: step3: 结果: E:\executable\META-INF\MANIFEST.MF Manifest-Version: 1.0 Main-Class: cn.zno ...

  5. 设计模式23:Visitor 访问者模式(行为型模式)

    Visitor 访问者模式(行为型模式) 动机(Motivation)在软件构造过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的修改,将会给子类带来繁重的 ...

  6. 编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员

    建议95:避免在构造方法中调用虚成员 在构造方法中调用虚方法会带来一些意想不到的错误,虽然这种方法不常见,但还是需要注意这类陷阱. static void Main() { American amer ...

  7. Linux Guard Service - 守护进程分裂

    分裂守护进程 由于fork()后第一行仍然在循环中,使用fork()返回值鉴别当前进程的性质 int i = 0; for (i = 0; i < 10; i++) { // sleep(1); ...

  8. Linux常用命令,学的时候自己记的常用的保存下来方便以后使用 o(∩_∩)o 哈哈

    service httpd restart 重启Apache service mysqld restart 重启mysql [-][rwx][r-x][r--] 1 234 567 890 421 4 ...

  9. sqlite初识

    最近在部署PHP网站项目的时候,发现项目并没有使用传统的三大关系型数据库,而是采用了sqlite数据库,以前的时候,也见过sqlite,但是并没有深入了解其功能和用法,好奇心驱使,决定好好研究一下sq ...

  10. pandas set_index() reset_index()

    set_index() 官方定义: 使用一个或多个现有列设置索引,   默认情况下生成一个新对象 DataFrame.set_index(keys, drop=True, append=False,  ...