*运算符必须应用于指针

时间:2015-06-28 22:09:08

标签: c# .net casting operators

获取错误:

  

* opertaor必须应用于指针

public static void SetClass(decimal Value, string input)
{
    Utils.SetMemory(Offsets.ClassName, new byte[16]);
    byte[] Multiplier = new byte[] { 0x04 };
    byte[] inputBytes = Encoding.ASCII.GetBytes(input);
    Utils.SetMemory(Offsets.ClassName + ((uint)Value - 1 + * 0x10), Utils.Multiply(inputBytes, Multiplier));
}

如果我删除“*”前面的“+”那就说

  

无法从long转换为uint

因此,如果转换它是解决方案,我该怎么做?

需要使用自定义numericUpDown

Utils.SetMemory(Offsets.ClassName + ((uint)numericUpDown1.Value - 1) * 0x10, "Classes");

想要调用方法

Stats.SetClass(numericUpDown Here.Value, text string here);

我是新来的C#

修改

public static void SetMemory(uint Offset, byte[] value)
{
    PS3.SetMemory(Offset, value);
}

1 个答案:

答案 0 :(得分:0)

查看此部分(uint)Value - 1 + * 0x10。您没有遵循添加和乘法的数学规则,+*需要两个操作数。您没有提供两个操作数。这里+ * 0x10之后有两个运算符,这会导致问题。如果您要将0x10添加到之前的结果,请移除*,如果您希望乘以0x10,请移除+

cannot convert from long to uint.错误的问题是可能 Offsets.ClassName变量的类型为longInt64,{{1}的结果}语句很长,因为Offsets.ClassName + ((uint)Value - 1 * 0x10)的结果是((uint)Value - 1 * 0x10),当你有uint时,结果类型将是long + uint。现在您要将一个long变量传递给接受long的函数,这会导致错误,因为没有从uintlong的隐式转换。