我正在写一个数字转换器.如何在C#中使用内置函数将整数转换为二进制字符串(Convert.ToString
根据给定的值做不同的事情)?
cas*_*nca 17
今天几乎所有的计算机都在内部使用二进制补码表示,所以如果你做这样的直接转换,你将获得两个补码字符串:
public string Convert(int x) {
char[] bits = new char[32];
int i = 0;
while (x != 0) {
bits[i++] = (x & 1) == 1 ? '1' : '0';
x >>= 1;
}
Array.Reverse(bits, 0, i);
return new string(bits);
}
Run Code Online (Sandbox Code Playgroud)
这是剩余两次转换的基础.对于符号幅度,只需事先提取符号并转换绝对值:
byte sign;
if (x < 0) {
sign = '1';
x = -x;
} else {
sign = '0';
}
string magnitude = Convert(x);
Run Code Online (Sandbox Code Playgroud)
对于一个补码,如果数字为负,则减一:
if (x < 0)
x--;
string onec = Convert(x);
Run Code Online (Sandbox Code Playgroud)
至少部分答案是decimal.GetBits(someValue)
用于将小数转换为其二进制表示.
BitConverter.GetBytes
反过来,可以使用返回的元素decimal.GetBits()
将整数转换为字节.
您可能会发现decimal.GetBits()
文档很有用.
不过,我不知道如何从字节到十进制.
更新:根据作者的更新:
BitConverter
包含将数字转换为字节的方法,便于获取二进制表示.这些GetBytes()
和ToInt32()
方法便于在每个方向上进行转换.在ToString()
重载方便创建十六进制字符串表示,如果你会发现,更容易解释为1和0.
归档时间: |
|
查看次数: |
38533 次 |
最近记录: |