c# - 这是已定义问题的正确代码吗?
问题描述
任何人都可以帮助我在 c# 中进行位交换。实际上是这样的,该函数接受一个数字,然后将其转换为二进制,然后交换其任何位,然后将其转换为十进制并返回该数字。
这是我尝试过的:
DectoBin(int num) {
stringBuilder strBin = new StringBuilder();
while (num / 2 ! =1) {
strBin.Append((num % 2).ToString());
num = num / 2;
}
String str = strBin.ToString();
int BinDec(string str)
int DecNum = 0;
for (int i = str.length - 1; i >= 0; i++) {
DecNum = +DecNum
int.parse(str[k++] * pow(2, i);
}
return DecNum;
}
我很快就需要这个问题的 c# 代码。如果有人可以提供代码,我将非常感激。
解决方案
您的问题很模糊,但是,我可以提供一些建议。首先,让我们将初始表示int
为方便string
:
int value = ...
// Meanful bits only : 5 -> "101" (without leading zeroes)
string bits = Convert.ToString(unchecked((uint) value), 2);
// All 32 bits : 5 -> "00000000000000000000000000000101"
string allBits = Convert.ToString(unchecked((uint) value), 2).PadLeft(32, '0');
查询时间;让我们使用Linq,它会非常方便。取决于什么是交换意味着它可以是
using System.Linq;
...
// reversed bits: "101" -> "101", "100" -> "001", etc.
// but either "bits" or "allBits" as an argument
string result = string.Concat(bits.Reverse());
或者
// each '0' truns into "1" and vice versa: "101" -> "010", "100" -> "011" etc
// but either "bits" or "allBits" as an argument
string result = string.Concat(bits.Select(b => b == '1' ? '0' : '1'));
最后,让我们在int
以下帮助下收回Convert
:
int outcome = unchecked((int)Convert.ToUInt32(result, 2));
推荐阅读
- javascript - 通过 jQuery 向选择框父级添加类时出现问题,因为它适用于页面上的所有选择框父级
- python - 无法使用 python 读取 xml 层次结构
- python - 在python中播放时间t1到时间t2之间的音乐
- docker - Dockerfile:如何使用 curl 下载文件并复制到容器中
- c++ - 实例化对象的不同方式有哪些优缺点?
- python - python和距离计算
- php-curl - PHP CURL 因 Kubernetes CronJob 中的操作超时而失败
- flutter - 使用 Flutter web 绘制 ECG 标签和 ECG
- java - Spring中的LazyInitializationException(不经常抛出)
- python - 为日期范围内的每个值创建一个包含数组数据的 DataFrame