c# - 字符串的按位运算 - 1440 个字符长度

标签 c# string bit-manipulation logical-operators operation

如何在 C# 中对字符串进行按位运算

例子

string sr1="0101110";
string sr2="1101110";

sr1 & sr2="0101110";

sr1 | sr2="1101110";

我怎样才能进行这样的比较?

注意字符串长度固定为 1440 个字符

这是我肮脏的解决方案

    private string compareBitWiseAnd(string sr1, string sr2)
    {
        char[] crArray1 = sr1.ToCharArray();
        char[] crArray2 = sr2.ToCharArray();
        StringBuilder srResult = new StringBuilder();

        for (int i = 0; i < crArray1.Length; i++)
        {
            if (crArray1[i] == crArray2[i])
            {
                srResult.Append(crArray1[i]);
            }
            else
            {
                srResult.Append('0');
            }
        }

        return srResult.ToString();
    }

    private string compareBitWiseOr(string sr1, string sr2)
    {
        char[] crArray1 = sr1.ToCharArray();
        char[] crArray2 = sr2.ToCharArray();
        StringBuilder srResult = new StringBuilder();

        for (int i = 0; i < crArray1.Length; i++)
        {
            if (crArray1[i] == '1' || crArray2[i] == '1')
            {
                srResult.Append("1");
            }
            else
            {
                srResult.Append('0');
            }
        }

        return srResult.ToString();
    }

最佳答案

Convert先到实际位,然后再进行按位比较。

int num1 = Convert.ToInt32(sr1, 2);
int num2 = Convert.ToInt32(sr2, 2);

int result = num1 & num2;

使用this如果您想从 result 中获取二进制字符串。

关于c# - 字符串的按位运算 - 1440 个字符长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096409/

相关文章:

C# 绘制三点圆弧

c# - 如何减少具有多个单元的 PdfPTable 的内存消耗

python - 在 python3 中更新 stdout 上的打印字符串

C# 下载文件不起作用

c# - 统一二维 : How to collide with side of screen

c++ - 小线程++ : getting thread ID

r - 以编程方式构建公式而无需字符串操作

c# - 确定是否设置了特定标志的最佳表达式是什么

matlab - Matlab中的位级运算

c++ - ~3 可以安全地自动加宽吗?