C#
爬行的菜鸟
学习才是正确的道路
展开
-
C# 十六进制字符串转byte
class Program { static void Main() { string ss = "FE FE FE 68 20"; byte[] bArray = GetByteArray(ss); ...原创 2018-09-07 14:50:37 · 13175 阅读 · 0 评论 -
C#实现Stream与byte[]之间的转换实例教程
一、二进制转换成图片MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); this.pictureBox1.Image二、C#中byte[]与string的转换代码1.System.Text.UnicodeEnc...转载 2019-03-13 16:07:57 · 1117 阅读 · 0 评论 -
c#中去掉字符串空格方法
(1)Trim方法string tt=" aaa "; tt=tt.Trim() 去字符串首尾空格的函数tt=tt.TrimEnd() 去掉字符串尾空格tt=tt.TrimStart() 去掉字符串首空格(2)通过ASCII码值去掉字符中的空格由于空格的ASCII码值是32,因此,在去掉字符串中所有的空格时,只需循环访问字符串中的所有字符,并判断它们的A...转载 2019-03-28 14:11:47 · 13156 阅读 · 0 评论 -
C# string类型和byte[]类型相互转换
string类型转成byte[]:byte[]byteArray=System.Text.Encoding.Default.GetBytes(str);byte[]转成string:stringstr=System.Text.Encoding.Default.GetString(byteArray);string类型转成ASCII byte[]:...转载 2019-03-28 20:56:50 · 1491 阅读 · 0 评论 -
C#调用C++字符集与类型对比
1.C++数据类型与C#对应关系2.C#中调试C++的DLL3.字符集常识最近项目,需要在C# 中调用C++ 写的DLL,因为C# 默认的编码方式是Unicode,而调用的DLL规定只处理UTF8编码格式的字符串,DLL中的输入参数类型char*被我Marshal成byte[],输出参数类型char**被我Marshal成了string(C++和C#之间的类型转换请参阅相关资料),于是...转载 2019-05-06 10:35:52 · 492 阅读 · 0 评论 -
C#调用C++的Dll(参数和返回值為char* TCHAR*)
想要在C#和C++之间进行字符串传递会涉及到两件事情:1.C#的string和C++的字符串首指针要怎么对应. 2.字符串分为ANSI和UNICODE.C++ 头文件接口://FilePolice.h //參數和返回值為Ansiextern "C" __declspec(dllexport) char* __stdcall EncryptString(char* i...转载 2019-05-06 10:38:25 · 1761 阅读 · 0 评论 -
C# string转换为几种不同编码的Byte[]的问题
1.string–>Byte[]转换①String类型转换为UTF8编码的Byte[]:string strvalue ="00123aabbAA$%";byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(strvalue);②string类型转换为ASCII编码的Byte[]:string strvalue ="...转载 2019-05-06 10:42:12 · 4910 阅读 · 0 评论 -
(C++C#类型互转工具)使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL里面提供的函数的时候,总是被生成正确的C函数在C#中的正确声明而困扰,而生成C++中结构体在C#中的声明 - 天,没有什么比这个更让人恶心的事情了。因为:1.如果你的结构体里面包含 TCHAR字符串成员的话,需要考虑ANSI和Unicode DLL的情形。2.如果你的结构...转载 2019-05-10 08:19:59 · 2294 阅读 · 0 评论 -
C#调用dll提示"试图加载格式不正确的程序"解决方法
程序在32位操作系统上运行正常,在64位操作系统上运行读卡功能提示”试图加载格式不正确“。--------------------------------------------------------------------------------------------点击项目属性,把目标平台Any CPU 设置为X86转载请注明本文地址:C#调用dll提示"试图加载格式...转载 2019-06-10 14:10:39 · 1481 阅读 · 0 评论 -
VS2013程序打包部署,生成exe文件
VS2012中打包工具被看做程序集,在使用时和程序集一样被创建到程序解决方案下。需要我们做的是添加项目即可。但是对于初次使用的朋友来说,我们需要根据提示一步步的先下载安装该打包工具。具体的安装方法不再详述,网上资料很多 。 1、设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署...转载 2018-09-19 08:35:01 · 13694 阅读 · 2 评论 -
c#错误处理:The debugger cannot continue running the process. Unable to startdebugging./调试器无法继续运行该进程。无法启动
本文记录了如何解决Visual Studio调试过程中出现的“调试器无法继续运行该进程。无法启动调试”错误。遇到这个问题千万不要慌张,不要去重置或者重新安装VS,因为这只是费时费力的操作,而且不明白此错误的原因以后还会遇到。解决这个问题有两种方法,第一种就是设置默认启动项目,第二种就是将多启动项目改为单启动项目。Visual Studio弹出的错误提示框如下:或者...原创 2019-07-09 09:29:10 · 1308 阅读 · 0 评论 -
C#SerialPort详细用法
转自:https://www.cnblogs.com/fx2008/p/4317302.html1。简介随着USB的流行,串口通讯已经应用到日常生活的很多方面了,USB是一种高速的串口通讯协议,USB接口非常复杂,通常被用在需要传输大量数据数据的地方,如U盘、相机、打印机等。除了USB这种较为奢侈的串口外,在工控和嵌入式行业,大量被使用的是另一种古老的串口协议,RS-232串口。RS-232...转载 2019-07-04 14:17:53 · 7279 阅读 · 0 评论 -
c#在代码中再次调用按钮点击事件
在一个按钮事件中调用另一个按钮(button1)的点击事件,可以直接如下: button1.PerformClick() 也称之为 以编程方式调用按钮的click事件原创 2019-07-05 17:30:16 · 3523 阅读 · 0 评论 -
原 C#多线程开始、暂停、恢复简单例子
namespace Test{ public partial class Form4 : Form { public Form4() { InitializeComponent(); Label.CheckForIllegalCrossThreadCalls = false; ...转载 2019-08-06 10:31:14 · 1375 阅读 · 2 评论 -
c#中设置窗体在显示器居中显示/禁止改变窗体大小
在窗体的属性中查看:StartPosition属性,该属性的设置中有一个"CenterScreen"的选择项,该项就是设置窗体局中显示的.要是想禁止调整窗体的大小,可以查看:FormBorderStyle属性,该属性的设置中有一个"FixedSingle"的选择项,它可以禁止调整窗体的大小....原创 2019-03-13 13:38:29 · 557 阅读 · 0 评论 -
c#开发的winform程序在不同操作系统下的兼容问题
建议用.net framework 3.5作为生成目标,CPU设置为any来开发,然后在app.config文件里加上<?xml version="1.0" encoding="utf-8"?><configuration> <startup useLegacyV2RuntimeActivationPolicy="true">...转载 2019-03-12 14:57:07 · 4588 阅读 · 0 评论 -
C#与C++之间类型的对应
Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char ...转载 2018-09-26 09:04:19 · 292 阅读 · 0 评论 -
C#调用c++Dll结构体数组指针的问题
C#调用c++dll文件是一件很麻烦的事情,首先面临的是数据类型转换的问题,相信经常做c#开发的都和我一样把学校的那点c++底子都忘光了吧(语言特性类)。网上有一大堆得转换对应表,也有一大堆的转换实例,但是都没有强调一个更重要的问题,就是c#数据类型和c++数据类型占内存长度的对应关系。 如果dll文件中只包含一些基础类型,那这个问题可能可以被忽略,但是如果是组合类型(这个叫法也许不...转载 2018-09-21 10:42:58 · 1395 阅读 · 0 评论 -
函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。在dllimport中加入CallingConvention参数就行了,[DllImport(PCAP_DLL, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]要注意C++与NET中数据类型的对应: //c...转载 2018-09-21 12:51:46 · 1786 阅读 · 0 评论 -
C#调用C++编写的DLL函数各种参数传递问题
1. 不返回值的参数C++ 原型: [cpp] view plain copybool SendNewSms(char *szTel, char *szMessage); C#引用; [csharp] view plain copy[DllImport( "CdmaCard.dll",EntryPoint="SendNewSms")] pub...转载 2018-09-21 13:54:19 · 4071 阅读 · 0 评论 -
C# richTextBox显示不同颜色文字
C# richTextBox显示不同颜色文字#region 日志记录、支持其他线程访问 public delegate void LogAppendDelegate(Color color, string text); /// <summary> /// 追加显示文本 /// </summary...转载 2018-10-19 11:06:43 · 3598 阅读 · 0 评论 -
C# CRC8校验
public class CRC8{ /// <summary> /// CRC8位校验表 /// </summary> private byte[] CRC8Table = new byte[] { 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65, ...转载 2018-10-19 13:08:43 · 5991 阅读 · 0 评论 -
CRC16校验 ---复制,查表法,用于高速通信校验
前段时间用单片机做高速通信,在主机上增设人机界面,如果通信有出现错误的话,主机出现提示,但是有几次明显出错了。(我是做LED夜景的),灯光变化出现紊乱。但是为什么没有校验出来了,原来用单片机自带的校验也会出现丢失。 想想只能用起CRC校验,如果用CRC32那么太大了,用CRC8觉得强度不够,折中选择CRC16校验。其实之前都没有接触过CRC16校验,后来翻起来了大学的教材《数字通信原理...转载 2018-10-19 13:24:09 · 4805 阅读 · 1 评论 -
c#的CRC16位校验
/// <summary>/// CRC16 /// </summary>/// <param name="data">要进行计算的数组</param>/// <returns>计算后的数组</returns>private static byte[] CRC16(byte[] data){byte[] return转载 2018-10-19 13:26:10 · 5885 阅读 · 0 评论 -
C#,Java,C -循环冗余检验:CRC-16-CCITT查表法
C#代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestCRC{ /// <summary> /// 循环冗余检验:CRC-16-CCITT查表法 /// </summary> ...转载 2018-10-22 11:05:12 · 1514 阅读 · 0 评论 -
C#计时器的三种实现方法
在原博基础上学习,然后自己重新设计实现了一遍。在.NET中有三种计时器:一、 System.Windows.Forms命名空间下的Timer控件,和所在的Form属于同一个线程。Timer控件只有绑定了Tick事件和设置Enabled属性为True之后才会自动计时,Stop()方法,Start()方法启动计时器重新计时;MyTimer.Enabled = true; //启动计时器...转载 2018-10-31 09:07:05 · 1578 阅读 · 0 评论 -
wmi入门
什么是 WMI?WMI最初于 1998 年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系统中核心的管理支持技术。基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI 是一种规范和...转载 2018-11-01 13:02:27 · 842 阅读 · 0 评论 -
USB HID通讯流程
创建C# USB hid通讯类下面是应用到WIN32 API:1. 读取Hid设备全局id[DllImport("hid.dll")] private static extern void HidD_GetHidGuid(ref Guid HidGuid); 2. 取得一个包含所有HID接口信息集合的句柄 [DllImport("setupapi.dll"...转载 2018-11-02 09:52:54 · 6494 阅读 · 1 评论 -
C#操作总结之界面登录(一)
使用了一段时间的C#后发现自己不进行归纳总结总是容易忘记一下东西,这里写下自己的实操经历。话不多说开始吧少年第一步:布置控件 控件: 两个TextBox 如上图:用户名右侧的TextBox的(Name)为txtUserName 密码 右侧...原创 2019-08-22 17:56:14 · 1367 阅读 · 0 评论