标签: sbyte

如何将 C# 类似字符串的变量传递给 sbyte* 参数?

我继承了一个 C++ DLL 及其相关头文件,其函数声明如下

int func1(int i);
int func2(char* s);
Run Code Online (Sandbox Code Playgroud)

我还继承了一个参考VC++参考类,它包装了上面的DLL以便在C#环境中使用

public ref class MyWrapperClass
{
    int func1_w(int i)
    {
        return func1(i);
    }
    int func2_w(char* s)
    {
        return func2(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的 C# 应用程序中,我可以使用 func1_w(int i),但我不明白如何将字符串传递给 func2_w(sbyte* s):我收到一条关于无法获取指向 sbyte 的指针的错误。我将 C# 项目设置为不安全,并将该函数声明为不安全。

如何将 sbyte* 参数传递给函数 func2_w?

c# c++ string cross-language sbyte

2
推荐指数
1
解决办法
1387
查看次数

检查范围和设置默认值时简化if子句

我有一个函数将double值转换为sbyte并返回其十六进制表示:

string convertToSByte(double num, double factor)
{

    double _Value = num * factor;

    if (_Value > 127)
    {
        _Value = 127;
    }
    else if (_Value < -127)
    {
        _Value = -127;
    }

    return Convert.ToSByte(_Value).ToString("X2");
}
Run Code Online (Sandbox Code Playgroud)

计算出的_Value值应该在[-127 ; 127]if 的范围内,那么这些值必须设置为默认值.

问题:如何简化这两个条件和默认值的设置?

编辑:

我尝试使用条件运算符,?但实际上它并不简单(甚至更难读),也没有更少的代码

PS.这个问题更多的是教育目的.找到一种不同的方法来检查变量的范围

c# if-statement sbyte

1
推荐指数
1
解决办法
42
查看次数

标签 统计

c# ×2

sbyte ×2

c++ ×1

cross-language ×1

if-statement ×1

string ×1