Bid*_*m92 3 c# modbus type-conversion modbus-tcp
所以我是 C# 新手,我已经搜索过,但我只是不知道我在搜索什么。
我有一个名为 input 的布尔变量,它保存了 ModBus 接口库中的 32 个真/假位。
这是解释我的 32 个真/假值的图像。基本上,这 32 个真/假值存储在输入中。我需要将它们整理成一个 32 位整数。

我想知道的是如何将这 32 个值整理成一个 32 位字符串,即 (0000 0000 0000 1000 1000 1000 1000 1000),这显然是一个 32 位整数,并给我一个十进制数 88888。
我现在陷入困境,因为我不确定我应该使用什么命令。
只是一些位操作:
uint i = 0;
var boolArr = new[] { true, false, true }; // 0b101
foreach (var bit in boolArr)
{
// perform a bitwise left shift by 1 position
// equivalent to multiplying i by 2
i <<= 1;
// store the bool value in the LSB of i
i |= (uint)(bit ? 1 : 0);
}
Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)
将输出一个值为5.
或者单行:
val = Convert.ToUInt32(string.Join("",
bools.Select(b => b ? 1 : 0)), 2);
Run Code Online (Sandbox Code Playgroud)