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. 在对该问题的评论中指出的那样,该函数称为蕴涵,即 AB

【讨论】:

@Hooch:什么错误?还是一样的操作。

以上是关于C#中对字节的操作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# NAudio 操作字节?

NAudio C#:如何从 WaveInEventArgs 获取字节数组以进行进一步操作

连接字节 [] 的 C# 列表

js中对字符串操作的常见方法

C# 文件操作 把文件读取到字节数组

mysql-protocol中对编码长度整数型的规则