C#中对字节的操作
Posted
技术标签:
【中文标题】C#中对字节的操作【英文标题】:Operations on bytes in C# 【发布时间】:2011-06-05 14:22:12 【问题描述】:我正在编写应用程序来控制 LPT 上的 LED。 除了这个,我什么都有。 这是一个小功能。
我有这样的:
我想构建一个接受两个参数并返回一个数字的函数: 在实际代码中,这些二进制数字将采用十六进制。我把它们放在那里是为了让你更容易想象它。
示例 1:
arg1 = 1100 1100
arg2 = 1001 0001
retu = 0100 1100
示例2:
arg1 = 1111 1111
arg2 = 0001 0010
retu = 1110 1101
示例 3:
arg1 = 1111 0000
arg2 = 0010 0010
retu = 1101 0000
我不知道这个函数应该是什么样子。 我希望它尽可能快。
我将每秒调用此函数 200 次。
【问题讨论】:
清如泥。首先,我不知道“我有这样的东西:”是什么意思。此外,在您的总结中,1+1=1,但在您的示例中,1+1=0。 ??? @Jonathan Wood 我编辑它 这是一个程序员的网站。为什么你会认为任何东西都比十六进制更容易可视化? :-) 你的函数叫做“蕴涵”,写成a => b。它等于 a & ~b。 @Joey,在这种情况下使用冒号-减号-闭括号表示法来表示一个笑话。 【参考方案1】:本质上,第二个参数中的设置位是您想要删除的位。所以你可以简单地 and 用否定的第二个参数:
byte Foo(byte a, byte b)
return (byte)(a & ~b);
你的例子至少遵循这个。
正如Alexandre C. 在对该问题的评论中指出的那样,该函数称为蕴涵,即 A ⇒ B。
【讨论】:
@Hooch:什么错误?还是一样的操作。以上是关于C#中对字节的操作的主要内容,如果未能解决你的问题,请参考以下文章