jjzjj

c++ - 如何在 C++ 中使用 WORD、UCHAR、ULONG、USHORT 类型?

我在VisualStudio2010中创建了一个Win32控制台项目。在这个项目中,我想使用具有相应header的外部库。头文件包含声明为的变量UCHAR乌龙我们做空单词如上大写。我用C++编写的程序很少,所以我不认识这些类型,而且我确实会在包含它们的每一行代码中遇到错误:WORDmyVariable;错误:errorC2146:syntaxerror:missing';'beforeidentifier'myVariable'这可能是一件非常简单的事情,但希望对我的C++知识有所帮助。我需要什么才能使用这些类型? 最佳答案 这些类

c# - byte[] 到 ushort[]

这是我的问题。请容忍我给出一点解释:我正在将tiff图像读入缓冲区;我的tiff的每个像素都由一个ushort表示(16位数据,非负数)。我的图像大小是64*64=4096。当我的tiff加载到缓冲区时,缓冲区长度因此是8192(是4096的两倍)。我猜这是因为在我的缓冲区中,计算机使用2个字节来存储单个像素值。我想获取任何特定像素的值,在这种情况下,我应该将每2个字节合并为1个ushort吗?例如:0000000011111111->0000000011111111?这是我的代码:publicstaticvoidLoadTIFF(stringfileName,intpxlIdx,re

C# 对 ushort (UInt16) 进行位移

我需要对16位整数(ushort/UInt16)执行按位左移,但C#中的按位运算符似乎仅适用于int(32位)。我如何在ushort上使用 最佳答案 移位后将结果值转换回ushort:ushortvalue=1;ushortshifted=(ushort)(value 关于C#对ushort(UInt16)进行位移,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3819593/

64位来自ushort阵列的大端数据

我有一个ushort数组,该数组在command.data[]中包含两个数组项。我能够将这两个项目值结合在一起,并获得32位BigEndian值作为UINT32和以下代码PICECE。UInt32param32BitValue=(UInt32)command.Data[0]我还有另一个参数,该参数在ushort阵列中包含4个项目,我想将这四个值结合到ulong值中(插图)UInt64param64BitValue=(UInt64)command.Data[0]大或小的endian格式。我该如何实现?看答案您的第一个代码代码段实际上应移动16位,而不是32,如果command.Data真的是一个

c# - .Net 4.6 打破 XOR 密码模式?

在.NET4.5中,此密码在32位和64位架构上完美运行。将项目切换到.NET4.6会在64位中完全破解此密码,而在32位中有针对该问题的奇怪补丁。在我的方法“DecodeSkill”中,SkillLevel是唯一在.NET4.6上失效的部分。此处使用的变量是从网络流中读取并进行编码的。DecodeSkill(始终为SkillLevel返回正确的解码值)privatevoidDecodeSkill(){SkillId=(ushort)(ExchangeShortBits((SkillId^ObjectId^0x915d),13)+0x14be);SkillLevel=((ushort)

c# - SQLGetInfo - 如何使用此函数

我开发了一个c#应用程序,它连接到许多类型的数据库服务器,如Sql、Oracle、Mysql等。连接是使用ODBC建立的。我需要找到建立连接的服务器类型(DBMS类型),因为用户只需输入DSN名称。经过几个小时的冲浪,我发现我的需求只有通过这个功能才能实现SQLGetInfo.但我不知道如何在C#中处理这个问题。甚至已经检查了这个Link1.从上面的链接,我发现ODBCAPI只给出DataBasename和DataSourceName.但我需要找到数据库类型,比如它是SQL连接还是Oracle连接或mySqlConnection。是否可以从DSN名称中获取DBMS类型......?注意

c# - 如何从 C# 生成 CRC-16

我正在尝试使用C#生成CRC-16。我用于RS232的硬件要求输入字符串为十六进制。下面的屏幕截图显示了正确的转换,对于测试,我需要8000为0xC061,但是生成CRC-16的C#方法必须能够转换任何给定的HEX字符串。我试过使用Nito.KitchenSink.CRC我还尝试了下面的方法,当输入8000时生成8009-publicstringCalcCRC16(stringstrInput){ushortcrc=0x0000;byte[]data=GetBytesFromHexString(strInput);for(inti=0;i0)crc=(ushort)((crc

c# - 因非对象字段错误而错误对齐或重叠

我正在尝试创建以下结构:[StructLayout(LayoutKind.Explicit,Size=14)]publicstructMessage{[FieldOffset(0)]publicushortX;[FieldOffset(2)][MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]privateushort[]Y;[FieldOffset(12)]publicushortZ;}我收到以下错误:无法从程序集中加载类型“Message”,因为它在偏移量4处包含一个对象字段,该字段未正确对齐或与非对象字段重叠。有谁知道为什么这会导致错

c# - 我怎样才能使这个 C# 循环更快?

执行摘要:如果您想继续使用C#,Reed下面的回答是最快的。如果您愿意编码为C++(我就是),那是一个更快的解决方案。我在C#中有两个55mb的ushort数组。我使用以下循环组合它们:floatb=(float)number/100.0f;for(inti=0;i这段代码,根据前后添加DateTime.Now调用,运行需要3.5秒。我怎样才能让它更快?编辑:我认为这是一些代码,显示了问题的根源。当以下代码在全新的WPF应用程序中运行时,我得到了这些计时结果:Timeelapsed:00:00:00.4749156//arraysaddeddirectlyTimeelapsed:00:

c# - 如何判断一个文件是不是exe?

我如何确定传递给我程序的文件是有效的exe文件?实际上我的程序将一个文件作为输入并运行它,但是用户可以输入任何文件所以我必须确保输入是一个有效的exe。 最佳答案 如果您想要比“文件名是否以‘.exe’结尾?”更深入的内容但您不想实际运行该程序,您可以检查PEheader的存在和有效性。此外,检查前2个字节(PE文件的“MZ”)也将为DLL返回true。如果您不想这样,可以尝试这种方法。MattPietrek撰写了几篇描述PE格式的精彩文章:PeeringInsidethePE:ATouroftheWin32PortableExec