首页 > 编程语言 >【开源】C#上位机必备高效数据转换助手

【开源】C#上位机必备高效数据转换助手

时间:2025-01-10 10:59:58浏览次数:1  
标签:转换 字节 C# 数据 必备 开源 数组 方法

一、前言

大家好!我是付工。

我们在进行上位机开发时,从设备端获取到的数据之后,需要进行一定的数据处理及转换,才能生成我们需要用的数据。

这其中就涉及到了各种数据类型之间的相关转换,很多非科班出身的电气工程师,经常会因为弄不清楚各种数据类型之间的转换关系,导致无法获取到自己想要的数据。

因此,我开源了一个数据转换库的项目,放在Gitee上,希望对大家有所帮助。

二、网络架构

整个数据转换库总共包含15个类,包含了各种常用各种数据类型之间的互相转换,每个转换类中的方法都增加了注释,使用起来会很方便。

/// <summary>
/// 根据起始地址和长度自定义截取字节数组
/// </summary>
/// <param name="data">字节数组</param>
/// <param name="start">开始字节</param>
/// <param name="length">截取长度</param>
/// <returns>字节数组</returns>
[Description("根据起始地址和长度自定义截取字节数组")]
public static byte[] GetByteArrayFromByteArray(byte[] data, int start, int length)
{
    if (start < 0) throw new ArgumentException("开始索引不能为负数");
    if (length <= 0) throw new ArgumentException("长度必须为正数");
    if (data.Length < (start + length)) 
    throw new ArgumentException("字节数组长度不够或开始索引太大");
    byte[] result = new byte[length];
    Array.Copy(data, start, result, 0, length);
    return result;
}

三、项目应用

在项目上进行应用,可以通过以下两种方式:

1、Nuget安装

通过Nuget包管理器中年搜索xbd.DataConvertLib,点击安装即可,如下所示:

2、Gitee下载

Gitee下载链接:

https://gitee.com/fujiajin/xbd.DataConvertTool

下载之后即包含完整源码,可以集成到项目中或将dll文件和xml文件添加到项目中。

四、使用方法

虽然转换库包含了不同的类,每个类中又包含了很多方法,但是不用担心,只要掌握了以下几个原则,使用起来会很简单。

原则一:首先要确定使用哪个类,类的命名是根据返回值来决定的,这个返回值就是你希望得到的类型。

  • 如果返回布尔值或布尔数组,使用BitLib。
  • 如果返回字节数组,使用ByteArrayLib。
  • 如果返回短整型或短整型数组,使用ShortLib。
  • 以此类推。

原则二:确定好类之后,接下来就是确定方法。

  • 绝大多数方法的命名是按照 Get...From... 来定义的
  • 要明确知道需要什么类型,有什么类型的数据

示例:我们希望从一个字节数组中,某个索引开始截取转换成一个浮点数。

我们希望得到一个浮点数,因此类名选择FloatLib。

我们有的是一个字节数组,因此方法名选择GetFloatFromByteArray。

在实际应用中,Visual Studio会有智能提示,我们只需要选择即可。

五、软件工具

大家下载的源码中,运行的界面是基于这个转换库开发的一个测试工具,主要是使用反射和特性来实现的。

这上面罗列了通信库的所有的类和每个类对应的方法,每个类和方法都有对应的注释,然后通过表格输入正确的数据,点击执行结果,即可得到对应的结果。

比如:我们想要将2.5浮点数转成一个字节数组,那么选择ByteArrayLib的GetByteArrayFromFloat方法,第一个参数填写2.5,第二个参数填写大小端,即可得到结果为[64,32,0,0]。

开源不易,希望大家多多支持。

标签:转换,字节,C#,数据,必备,开源,数组,方法
From: https://www.cnblogs.com/xbdedu/p/18663596

相关文章

  • (即插即用模块-Attention部分) 三十四、(2022) FACMA 频率感知跨通道注意力
    文章目录1、Frequency-AwareCross-ModalityAttention2、WeightedCross-ModalityFusionmodule3、代码实现paper:FCMNet:Frequency-awarecross-modalityattentionnetworksforRGB-DsalientobjectdetectionCode:https://github.com/XiaoJinNK/FCMNet1、......
  • 锦锐151单片机驱动IC522低功耗刷卡程序
    锦锐151单片机驱动IC522低功耗刷卡程序内部存储卡片数据,低功耗远距离刷卡。驱动电机电磁铁串口输出卡片信息#ifndef_MAIN_C_#define_MAIN_C_/******************************************************************************************************************......
  • CDS标准视图:销售变现天数 I_DaysSalesOutstanding
    视图名称:销售变现天数I_DaysSalesOutstanding视图类型:参数视图代码:点击查看代码@AbapCatalog.sqlViewName:'IFIDAYSSLSOUTSTG'@AbapCatalog.compiler.compareFilter:true@AbapCatalog.preserveKey:true@VDM.viewType:#COMPOSITE@EndUserText.label:'DaysSalesOutst......
  • 10分钟白话call、apply、bind八股文
    主题:用最简单,通俗白话解说。目标1:学好一个call小目标,另外2个旁通soeasy正题入口:作用1:call函数的调用意思是函数的方法实践出真知:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"cont......
  • PCIe扫盲——TLP路由之Address Routing
    地址路由(AddressRouting)的地址包括IO和Memory。对于Memory请求来说,32bit的地址使用3DW的Header,64bit的地址使用4DW的Header。而IO请求则只能使用32bit的地址,即只能使用3DW的Header。注:再次强调,IO请求是为了兼容早期的PCI设备的,在新的PCIe设备中禁止使用。3DW和4DW的TLPHeader......
  • 洛谷题单指南-线段树的进阶用法-P3157 [CQOI2011] 动态逆序对
    原题链接:https://www.luogu.com.cn/problem/P3157题意解读:长度为n的序列,序列是1~n的排列,一共m个删除操作,每一个删除之前输出逆序对。解题思路:要计算静态的逆序对,可以通过树状数组、权值线段树等方式,时间复杂度都是O(nlogn)要计算动态的逆序对,算上每一次删除,暴力做法需要O(mnlo......
  • C51--06---矩阵键盘
    一、矩阵键盘1.定义:4X416个按键组成,以矩阵的方式进行连接,叫做矩阵键盘;2.优势将按键排列成矩阵形式,两端都接在I/O口上,可以减少I/O口的占用;注:独立按键的模式,将一端集中接在GND上,另一端单独引出一个I/O口,这样当按键比较多时,就会占用很多I/O口;3.读取方式采用逐行、逐列的“扫......
  • 【YashanDB知识库】审计表UNIFIED_AUDIT_TRAIL出现YAS-00220 utf8 sequence is wrong
    【问题分类】功能使用【关键字】UNIFIED_AUDIT_TRAIL,YAS-00220【问题描述】当审计对象的SQL语句包含非标准中文字符时,出现YAS-00220utf8sequenceiswrong,影响审计记录。--第一步:打开审计开关SQL>ALTERSYSTEMSETUNIFIED_AUDITING=true;Succeed.--创建审计......
  • Hyperledger Fabric v2.5.8 Endorsement failure
    2025-01-0916:47:36.545UTC016aWARN[vscc]Validate->Endorsmentpolicyfailureerror="validationofendorsementpolicyforchaincodefabcarintx12:0failed:implicitpolicyevaluationfailed-1sub-policiesweresatisfied,butthispolicyr......
  • cv::reprojectImageTo3D 使用
    cv::reprojectImageTo3D是OpenCV中的一个函数,用于将视差图像转换为3D点云。它依赖于相机的内参和视差值来计算每个像素的3D坐标。以下是该函数的基本使用方法。函数原型voidcv::reprojectImageTo3D(constcv::Mat&disparity,cv::Mat&_3dImage,constcv......