【问题标题】:_stat alternative in visual c#Visual c# 中的 _stat 替代方案
【发布时间】:2014-03-30 10:10:56
【问题描述】:

我在 VC++ 中有一个 SDK 示例,我正在用 c# 编写代码。在 VC++ 示例中他们使用过

struct  _stat StatBuff;

当我检查 _stat 的定义时,它是

#define _stat  _stat64i32

他们使用 StatBuff 作为

unsigned int BuffSize = StatBuff.st_size + 8;

此代码旨在为浏览的图像文件创建缓冲区,下一行是

ImageBuffer = (BYTE *)malloc( BuffSize );

我想知道如何在 c# 中转换 (StatBuff.st_size),我在互联网上搜索了很多但无法转换这段代码。我可以使用一些替代的 c# 函数吗?

【问题讨论】:

  • 或许你能告诉我们这段代码的目的是什么?
  • #nvoigt 我已经编辑了问题
  • 也许你可以发一个更大的块,因为C#中有简单的图片加载功能,不需要去摆弄低级字节计算。
  • 这可能是一个糟糕的开始代码选择,_stat() 是一个 Unix 函数,它很难映射到 Windows 文件系统。我想图像文件格式也是如此。不过,_stat.st_size 不是问题,它与 FileInfo.Length 相同。而且 malloc() 不应该让你慢下来,它是 new byte[]。

标签: c# c++ visual-c++


【解决方案1】:

各种_stat 函数是围绕底层 Win32 函数的 C/C++ 库包装器,旨在使从类似 OS 的 Posix 移植更容易。

使用像 +8 这样的偏移量是在假设 _stat 类型的内部布局可能会发生变化。

所有信息都在 .NET FileInfo 类型中可用。

【讨论】:

  • Richard 我很困惑,因为 _stat 具有诸如缓冲区和路径之类的属性,最终我必须传递给另一个 SDK 函数。我的问题是,要么我应该让我的类具有相同的属性,要么可以直接使用 FileInfo。
  • @Tanveer 如果没有更详细的代码知识,这是无法回答的。 (1) 了解代码的作用,(2) 使用 .NET 等效项重新编写,您可能会更好。这样的重写将不会是一个语句到一个语句的翻译。
猜你喜欢
  • 1970-01-01
  • 2018-02-06
  • 2011-08-24
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多