gpt4 book ai didi

c# - 需要帮助转换

转载 作者:行者123 更新时间:2023-11-27 23:30:19 24 4
gpt4 key购买 nike

您好,我曾尝试将下面的 C++ 代码转换为 C#,但我似乎没有做对。
我在下面的 .h 头文件中得到了这个

public: 
unsigned char inquiry_data[256];

然后是.cpp文件

sa = (PSCSI_ADDRESS)&inquiry_data[0];

当我进入 (PSCSI_ADDRESS) 的定义时,我在下面得到了这个:

typedef struct _SCSI_ADDRESS {
ULONG Length;
UCHAR PortNumber;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;

} SCSI_ADDRESS, *PSCSI_ADDRESS;

以下是我尝试转换为 C# 的内容

 public byte[] inquiry_data = new byte[256];

public class SCSI_ADDRESS
{
public ulong Length;
public byte PortNumber;
public byte PathId;
public byte TargetId;
public byte Lun;
}
sa = (SCSI_ADDRESS)inquiry_data[0];

但是,我不断在 (SCSI_ADDRESS)inquiry_data[0]; 行收到错误 Cannot convert type 'byte' to 'project1.Class.SCSI_ADDRESS'

请问有什么建议吗?

最佳答案

C# 不能像 C++ 那样进行数据转换。虽然固定类型,但 C++ 实际上并不是强类型的——您可以将任何您想要的类型转换为您需要的任何类型。

现在,使用 C# 时,事情变得更加复杂,因为 C# 竭力避免让用户执行不安全的事情。您想要做的是获取字节流并告诉编译器,“将其视为 SCSI_ADDRESS

要在 C# 中执行此操作,您可以使用序列化或不安全部分。描述了一种快速而肮脏(非常肮脏)的方法here简而言之。

关于c# - 需要帮助转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com