C#串口通讯中常用的16进制的字节转换
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进制的字节转换的更多相关文章
- JavaScript中字符串与16进制之间的转换
一.字符串转换为16进制 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Java中char转为16进制
Java中char转为16进制 char a = '0'; String hexStr = Integer.toHexString(a); System.out.println(hexStr);
- Java中字符串转为16进制表示
Java中字符串转为16进制表示 String str = "鲸"; char[] chars = "0123456789ABCDEF".toCharArray ...
- bgcolor RGB 和16进制之间的转换,16进制转RGB,源码
<p>bgcolor RGB 和16进制之间的转换,16进制转RGB,源码例如:<br /> 输入 201,255,201 转换成 #C9FFC9</p> < ...
- Java中byte与16进制字符串的互换原理
我们都知道Java中的byte是由8个bit组成的,而16进制即16中状态,它是由4个bit来表示的,因为24=16.所以我们可以把一个byte转换成两个用16进制字符,即把高4位和低4位转换成相应的 ...
- Java中byte与16进制字符串的互相转换
* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...
- delphi 中字符串与16进制、10进制转换函数
//字符串转成16进制代码function strToHexStr(str:string):string;varc:char;ss:string;i:integer;beginwhile str& ...
- [转]Java中byte与16进制字符串的互相转换
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...
- Guid和Oracle中16进制字符的转换
我们知道在Oracle中存的guid是16进制字符串,而在我们的C#代码中存的是guid对象,这样我会就要进行转换, 下面给出了两者进行转换的方法: public class Guid2RawProc ...
随机推荐
- mysql json格式数据处理
1.查询字段所对应的值: SELECT c.result_http->"$.create_time",json_extract(c.result_http,"$.e ...
- ngix 创建新的网站
1. 进入ngix 的目录的conf 目录 的 vhosts 2. 复制一份新的v2.edc.com.conf 3. server_name : v2.edc.com root : /ali/... ...
- 37 有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位.
题目:有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. public class _037NumberOff { public st ...
- SurfaceView实时绘图,视频流
- CSS 实现等高布局以及多行文本垂直居中
将display属性设置为table-cell,具有table的特点. 1.同行等高. 2.宽度自动调节. 相当于表格是td, <style type="text/css"& ...
- FPGA的时钟质量对设计的影响
小梅哥编写,未经许可严禁用于任何商业用途 近期,一直在调试使用Verilog编写的以太网发送摄像头数据到电脑的工程(以下简称以太网图传).该工程基于今年设计的一款FPGA教学板AC620.AC620上 ...
- 网络安全之iptables防火墙
1>各种传输方式到最后都会转化为能够通过网络发送的数据格式: 1>文本格式: 2>二进制格式:2>TCP三次握手连接,四次断开,连接时客户端是主动打开,服务器是被动 打开,处于 ...
- c++调用c#写的DLL
c++调用c#写的DLL: 此文章演示了建立c#的dll: c++建立工程,引入dll: 不能解决的问题: 指定dll的路径,在代码里面直接写 #using "xxx.dll" 必 ...
- LA 3401
彩色立方体. [分析] 弄清楚24种状态,可以由标准姿态旋转而来. 计算24种状态: #include <iostream> #include <string> ,,,,, } ...
- CXF动态调用wsdl接口
1.application.properties文件中配置接口url 2.工具类 package com.vulnverify.core.utils; import java.io.IOExcepti ...