进制之间的相互转化
2011-12-31 18:40
375 查看
由一个问题想到的!
这个问题是 在Windows计算器里,用programmer方式,
选择Dword即32位编码,然后切换到16进制,输入80800006,
再转化成十进制,会得到一个负数-2139095034
在C#里面80800006是一个uint变量,如何把它变成一个Int的负数?
答案:
unchecked操作符用于整型算术运算时控制当前环境中的溢出检查
意思就是无论运算是否是常量表达式,都没有编译错误或是运行时异常发生,只是返回值被截掉不符合目标类型的高位。
如果是Qword怎么办?会显示2155872262
用Int64 就可以了。
int 表示整型,
后面的 数据表示这个整型的长度,
比如 int32 表示 32位整型, 4字节, 是目前使用最多的
说的更简单一点就是
比如写
you missing a cast?)
扩展(其他写法):
//十进制转二进制
Console.WriteLine(Convert.ToString(69, 2));
//十进制转八进制
Console.WriteLine(Convert.ToString(69, 8));
//十进制转十六进制
Console.WriteLine(Convert.ToString(69, 16));
//二进制转十进制
Console.WriteLine(Convert.ToInt32(“100111101″, 2));
//八进制转十进制
Console.WriteLine(Convert.ToInt32(“76″, 8));
//十六进制转十进制
Console.WriteLine(Convert.ToInt32(“FF”, 16));
即十进制的数用Int32表示,而二进制,八进制,十六进制的数都用string表示
这个问题是 在Windows计算器里,用programmer方式,
选择Dword即32位编码,然后切换到16进制,输入80800006,
再转化成十进制,会得到一个负数-2139095034
在C#里面80800006是一个uint变量,如何把它变成一个Int的负数?
答案:
uint aa = 0x80800006; int bb=unchecked((int)aa);
unchecked操作符用于整型算术运算时控制当前环境中的溢出检查
意思就是无论运算是否是常量表达式,都没有编译错误或是运行时异常发生,只是返回值被截掉不符合目标类型的高位。
如果是Qword怎么办?会显示2155872262
用Int64 就可以了。
uint aa = 0x80800006; Int64 cc = (Int64)aa;题外说一下,其实int Int16 Int32 Int64的关系就是
int 表示整型,
后面的 数据表示这个整型的长度,
比如 int32 表示 32位整型, 4字节, 是目前使用最多的
说的更简单一点就是
int16=short; int32=int; int64=long;
比如写
uint aa = 0x80800006; int bb = unchecked((int)aa); Int64 cc = (Int64)aa; Int32 dd=(Int32)aa; Int16 ee=(Int16)aa; bb = cc;bb是int,cc是Int64 这样写就有编译错误:Error1Cannot implicitly convert type'long' to 'int'. An explicit conversion exists (are
you missing a cast?)
扩展(其他写法):
string hexstring = "80800006"; int result = Convert.ToInt32(hexstring, 16); long result1 = Convert.ToUInt32(hexstring, 16); int test = -2139095034; string tesString = Convert.ToString(test, 16);
//十进制转二进制
Console.WriteLine(Convert.ToString(69, 2));
//十进制转八进制
Console.WriteLine(Convert.ToString(69, 8));
//十进制转十六进制
Console.WriteLine(Convert.ToString(69, 16));
//二进制转十进制
Console.WriteLine(Convert.ToInt32(“100111101″, 2));
//八进制转十进制
Console.WriteLine(Convert.ToInt32(“76″, 8));
//十六进制转十进制
Console.WriteLine(Convert.ToInt32(“FF”, 16));
即十进制的数用Int32表示,而二进制,八进制,十六进制的数都用string表示
相关文章推荐
- bash实现10进制,16进制等等相互之间转化(转)
- java各种进制之间的相互转化
- asp.net(C#)中进制之间相互转化
- java中进制之间的相互转化
- json字符串和json对象之间相互转化
- JavaWeb从入门到放弃(4)-XML与Bean之间的相互转化
- Class 和 xml 之间的相互转化
- java 中InputStream,String,File之间的相互转化对比
- Int类型与String类型之间的相互转化
- 字符串和基本数据类型之间的相互转化
- java中数组的合并以及与集合之间的相互转化
- json:实体类和JSON对象之间相互转化
- JavaScript对象,JSON对象,JSON字符串之间的相互转化大全{包含三者的具体介绍和定义}
- Python中的列表,元组,字符串之间的相互转化
- java实现对gif与jpg之间的相互转化
- Calandar、Date、String之间的相互转化
- 十六进制字符串 与 所有字符(中文)之间的相互转化
- java中String、Date、Calendar之间相互转化
- 数组集合之间的相互转化
- 浅谈JS 数字和字符串之间相互转化的纠纷