错误1无法将类型'int'隐式转换为'uint'。存在显式转换(您是否错过了演员?)

时间:2013-07-15 07:42:06

标签: c# int uint

我是C#编码的新手,我最近遇到了一个问题,我想请求你的帮助。 我从下面的链接中获得了这段代码。

http://pastebin.com/5jQe5tQs

我的问题出在终点:

uint num = ((string_0[0] | (string_0[1] << 8)) |
            (string_0[2] << 0x10)) | (string_0[3] << 0x18);

我收到此错误:

  

无法将类型'int'隐式转换为'uint'。显式转换   存在(你是否错过演员表?)

根据我的知识和阅读,我发现问题来自一个int的值,对于int值来说太大了。 但是根据我的经验,我不知道哪个变量的值不是正确的格式。 更值得建议的专家可以帮我修改代码吗?

1 个答案:

答案 0 :(得分:3)

表达式的结果

((string_0[0] | (string_0[1] << 8)) | (string_0[2] << 0x10)) | (string_0[3] << 0x18)

int。你将它放入uint。只需将num设为int,或将表达式转换为uint

当您使用[]运算符对字符串的一部分进行反洗时,您会获取char。由于char do not exist的移位运算符,该值将隐式升级为int(升级没有问题,因为没有丢失准确性的风险)。所以这部分(和其他部分一样):

(string_0[1] << 8)

返回int