首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Unityscript转换为C#:如果(格式& 2)之类的内容意味着什么?

将Unityscript转换为C#:如果(格式& 2)之类的内容意味着什么?
EN

Stack Overflow用户
提问于 2014-10-12 12:30:19
回答 3查看 101关注 0票数 2

变量'format‘是一个字节,javascript如下所示:

代码语言:javascript
复制
  if( format & 2 ) // have normals
    {
        var normals = new Vector3[vertCount];
        ReadVector3ArrayBytes (normals, buf);
        mesh.normals = normals;
    }

资料来源:http://wiki.unity3d.com/index.php?title=MeshSerializer2

C#抱怨这一点,并表示它不能隐式地将int转换为bool。

format &2实现了什么?在C#中我应该检查哪些内容来评估它是否是真的?另外,一些关于这一问题的进一步阅读材料也会有所帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-12 12:58:10

Javascript中的&操作符是按位和操作符(ref:位运算符)。

按位使用2的操作将给出值0或2,这取决于第二个位是在另一个操作数中设置的。示例:

代码语言:javascript
复制
format    01101010
2         00000010
& ----------------
=         00000010

在Javascript中,您可以使用任何值作为if语句中的条件,并且它将被解释为布尔值。对于数值,任何非零值(而不是NaN)值都将被视为true

在C#中,&运算符在应用于整数时也充当按位和运算符的作用。不存在对布尔值的自动转换,因此必须检查按位操作的结果才能获得条件:

代码语言:javascript
复制
if ((format & 2) != 0)
票数 3
EN

Stack Overflow用户

发布于 2014-10-12 12:38:28

我认为这是一个按位运算,检查设置为第二个字节.(2不是位数,只有10是基2中的2)。

代码语言:javascript
复制
if((format & 2) != 0)
{
    ..
}

代码语言:javascript
复制
if((format & 2) == 2)
{
    ..
}
票数 2
EN

Stack Overflow用户

发布于 2014-10-12 12:43:33

&用于按位进行and操作。

|用于按位进行or操作。

您只能在整数上使用这些。

让你理解它的简单例子:

代码语言:javascript
复制
var r : int;
r = Random.Range(0, 1000);

if(r & 1)
    // Odd.

else
    // Even.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26325142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档