在C语言中,如何将8字节整数除以4个2字节的十六进制数?

在C语言中,如何将8字节整数除以4个2字节的十六进制数?,c,parsing,C,Parsing,我有学校的任务,但IDK如何设计的代码在所有 它需要做的功能是 输入8字节整数(我认为它必须是无符号long-long类型,因为输入数字必须是0或更多) 将输入的数字分成四个2字节,并将其保存在每个变量中。 假设一个字节是八位字节,八字节整数是64位。然后: 包括和 使用中的uint64\u t定义64位无符号整数变量x 使用scanf(“%”SCNu64,&x)从输入中读取数字 测试scanf的返回值。如果不是1,对于读取的一个数字,打印错误消息并退出程序 数字的四个部分是位位置0、16、3

我有学校的任务,但IDK如何设计的代码在所有

它需要做的功能是

  • 输入8字节整数(我认为它必须是无符号long-long类型,因为输入数字必须是0或更多)

  • 将输入的数字分成四个2字节,并将其保存在每个变量中。
    假设一个字节是八位字节,八字节整数是64位。然后:

  • 包括
  • 使用
    中的
    uint64\u t
    定义64位无符号整数变量
    x
  • 使用
    scanf(“%”SCNu64,&x)
    从输入中读取数字
  • 测试
    scanf
    的返回值。如果不是1,对于读取的一个数字,打印错误消息并退出程序
  • 数字的四个部分是位位置0、16、32和48中每一个的16位。将
    x
    右移0、16、32和48,将每个部分移到低位
  • 每次移位后,提取低16位。您可以使用16位掩码的AND操作执行此操作,
    0xffffu
    ,也可以通过将值分配给只存储16位的
    uint16\u t
    变量来执行此操作
  • 打印数字。如果它们位于
    uint16\u t
    变量中,则可以使用
    printf(“%”PRIu16,变量)打印它们。如果它们位于其他变量或表达式类型中,则需要不同的转换说明符,如
    PRIu64
    (如果您有
    uint64\t
    表达式)

  • 第3步和第4步没有意义。计算机中的所有整数都以二进制格式存储。无法转换为十六进制或十进制。你可以做的是将值打印为十六进制或十进制,但这不是一个转换。从8中提取2可以通过简单的布尔运算(如掩蔽和移位)轻松完成。你熟悉布尔运算,比如OR,和XOR是吗?@4386427:Re“计算机中的所有整数都以二进制格式存储”:这肯定不是真的。一些整数使用ASCII数字字符存储为十进制数字。有些存储在BCD中。JavaScript以浮点格式存储所有数字,甚至整数。。。我需要的是显示转换值结果,而不是实际转换实际值。ASCII、FP和BCD都是二进制数据的表示/解释。有二进制数据和二进制指令代码,就是这样,真的。