输入一个十进制整数,将其转换成十六进制数输出,并提取每一字节所表示的十六进制数值逐一输出。测试数据如下:
分析:从控制台输入一个十进制整数,将其转换成十六进制数输出,接着提取其4个字节。用到按位与运算符“&”、右移位运算符“>>”。
ps:“0x”是十六进制数的前缀。位(bit):度量数据的最小单位,表示一位二进制信息;字节(byte):由八位二进制数字组成(1 byte = 8 bit)。1个字节表示2位十六进制数。
新建一个Visual C# 控制台程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10_16_013
{
class Program
{
static void Main(string[] args)
{
/* 功能: 输入一个十进制整数,将其转换成十六进制数输出,并提取每一字节所表示的十六进制数值逐一输出
* 补充:位(bit):度量数据的最小单位,表示一位二进制信息。
* 字节(byte):由八位二进制数字组成(1 byte = 8 bit)。
*/
Console.WriteLine("输入一个整数:");
int Num = int.Parse(Console.ReadLine());
// 从控制台输入一个十进制整数
Console.WriteLine("{0}的十六进制形式为0x{1:X8}",Num,Num);
// X8表示十六进制格式(大写),域宽8位,不足的左边填0
int Hex = Num & 0x000000FF;
// 数值与0xFF按位与运算
Console.WriteLine("第1个字节为:0x{0:X2}",Hex);
// X2表示十六进制格式(大写),域宽2位,不足的左边填0
Hex = Num >> 8 & 0x000000FF;
// 数值右移8位与0xFF按位与运算
Console.WriteLine("第2个字节为:0x{0:X2}", Hex);
// X2表示十六进制格式(大写),域宽2位,不足的左边填0
Hex = Num >> 16 & 0x000000FF;
// 数值右移8位与0xFF按位与运算
Console.WriteLine("第3个字节为:0x{0:X2}", Hex);
// X2表示十六进制格式(大写),域宽2位,不足的左边填0
Hex = Num >> 24 & 0x000000FF;
// 数值右移8位与0xFF按位与运算
Console.WriteLine("第4个字节为:0x{0:X2}", Hex);
// X2表示十六进制格式(大写),域宽2位,不足的左边填0
}
}
}
当输入123456789时,对应的十六进制数为0x075BCD15。
第1个字节为0x15,十进制为21。
右移8位后,对应的十六进制数为0x00075BCD。
第2个字节为0xCD,十进制为205。
右移16位后,对应的十六进制数为0x0000075B。
第3个字节为0x5B,十进制为91。
右移32位后,对应的十六进制数为0x00000007。
第4个字节为0x07,十进制为7。对应的,当输入其他数据时,依然这样逐步分析。