谁知道UInt64怎么转换为二进制 我知道十进制可以通过下面来转换,可UInt64怎么转化为二进制呢?int num = 16;int type = 2;string str = Convert.ToString(num, type);MessageBox.Show(str); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 UInt64 u = UInt64.MaxValue - 1;string str = Convert.ToString((UInt32)(u / 4294967296), 2) + Convert.ToString((UInt32)(u % 4294967296), 2); 楼上答案正确吗?如果低32位字符串位数不够,连接起来结果不就错了吗?这个转换没有现成的方法,不过在Msdn里有个例子ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref2/html/T_System_IFormatProvider.htm其中就实现了ulong到二进制字符串的转换。 using System;class Test{ static void Main() { Console.WriteLine(ToBin(UInt64.MaxValue)); } static string ToBin(UInt64 u) { char [] s = new char[64]; for (int i = 63; i >= 0; i--) { s[i] = (u & 1) == 1 ? '1' : '0'; u >>= 1; } return new string(s); }} 功能OK static string ConvertToBin(UInt64 myValue) { string s = string.Empty; byte[] bytes = BitConverter.GetBytes(myValue); for (int k = bytes.Length - 1; k >= 0; k--) { s += Convert.ToString(bytes[k], 2); } return s; } 楼主给分吧,解决了! ulong num = ulong.MaxValue; int type = 2; string str = Convert.ToString(BitConverter.ToInt64(BitConverter.GetBytes(num), 0), type); MessageBox.Show(str); 上述例子会把 ulong.MaxValue 转为 8 个字符的数组,然后转为 long 型的值,然后转为二进制字符串。(ulong)18446744073709551615(byte[])255 255 255 255 255 255 255 255(long)-1(string)“1111111111111111111111111111111111111111111111111111111111111111” using System;class Test{ static void Main() { ulong num = ulong.MaxValue; int type = 2; string str = Convert.ToString(unchecked((long)num), type); Console.WriteLine(str); }} 不用这么麻烦,直接转换为long就行了:unchecked((long)ulong.MaxValue) 空间Ⅳ你把 18446744073709551615 转成 long 试试看 这样更简单:ulong u = ulong.MaxValue;string str = Convert.ToString((long)u, 2); 原来不加unchecked就可以转,我一开始用了个(long)ulong.MaxValue没成功,还以为转不了呢,所以才用BitConverter,学艺不精啊,献丑了! 如果是一个编译时就可确定且会溢出的常量,强制转换就会造成编译错误。另,有一个/checked编译器选项:/checked 选项指定,不在 checked 或 unchecked 关键字的范围内、并且产生的值超出数据类型范围的整数算法语句是否将导致运行时异常。/checked[+ | -]备注checked 或 unchecked 关键字范围内的整数算法语句不受 /checked 选项的影响。如果不在 checked 或 unchecked 关键字范围内的整数算法语句产生的值超出数据类型范围,并且编译中使用了 /checked+ (/checked),则该语句将在运行时导致异常。如果编译中使用的是 /checked-,则该语句在运行时不会导致异常。此选项的默认值是 /checked-,所以只需完全省略此选项,就可以获得相同的效果。使用 /checked- 的一个情况是在生成大应用程序时:有时使用自动化工具生成这类应用程序,这些工具可能自动将 /checked 设置为 +,这时您可以通过指定 /checked- 重写全局默认值。在 Visual Studio 开发环境中设置此编译器选项1. 打开项目的“属性”页。2. 单击“生成”属性页。3. 单击“高级”按钮。4. 修改“检查算法上溢/下溢”属性。 如果是一个编译时就可确定且会溢出的常量,强制转换就会造成编译错误。 如果是一个编译时不能确定的量,由于默认的编译选项是 /checked-,相当于 unchecked(...),就不会有编译错误,也不会产生运行时异常。如果显式加上 unchecked(...),就可以确保即使在有 /checked+ 编译器选项时也不会产生运行时异常。 WPF取资源文件夹图片相对地址 C#字节数组的问题 a等于null和object.equals(a,null)有区别吗 C# winform EXCEL隔行求和 求C# 自定义增减查询条件 页面代码与后面代码? 各位高手,请帮帮我!真的是没有办法了! 【提问】请问,如何制作透明背景的图标? .ascx 文件怎么才能做成用户控件? 关于用户控件的问题 谁有c#的编码规范,给一份谢谢 使用httpwebrequest下载文件时 访问被拒绝(已经设置权限) 急急急!!!在web页面上如何用表格动态显示数据库中读出来的数据
UInt64 u = UInt64.MaxValue - 1;
string str = Convert.ToString((UInt32)(u / 4294967296), 2) + Convert.ToString((UInt32)(u % 4294967296), 2);
如果低32位字符串位数不够,连接起来结果不就错了吗?这个转换没有现成的方法,不过在Msdn里有个例子
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref2/html/T_System_IFormatProvider.htm其中就实现了ulong到二进制字符串的转换。
{
static void Main()
{
Console.WriteLine(ToBin(UInt64.MaxValue));
}
static string ToBin(UInt64 u)
{
char [] s = new char[64];
for (int i = 63; i >= 0; i--)
{
s[i] = (u & 1) == 1 ? '1' : '0';
u >>= 1;
}
return new string(s);
}
}
{
string s = string.Empty; byte[] bytes = BitConverter.GetBytes(myValue); for (int k = bytes.Length - 1; k >= 0; k--)
{
s += Convert.ToString(bytes[k], 2);
} return s;
}
ulong num = ulong.MaxValue;
int type = 2;
string str = Convert.ToString(BitConverter.ToInt64(BitConverter.GetBytes(num), 0), type);
MessageBox.Show(str);
{
static void Main()
{
ulong num = ulong.MaxValue;
int type = 2;
string str = Convert.ToString(unchecked((long)num), type);
Console.WriteLine(str);
}
}
unchecked((long)ulong.MaxValue)
你把 18446744073709551615 转成 long 试试看
string str = Convert.ToString((long)u, 2);