[英]How do I convert a decimal integer into a single hexadecimal character? (C)
[英]How do I divide 8 byte integer to four 2 bytes Hexadecimal in C?
我有学校任务,但 IDK 如何设计代码...
它需要做的function是,
输入 8 字节 integer (我认为它必须是 unsigned long long 类型,因为输入数字必须是 0 或更多)
将输入数字分成四个 2 字节并将其保存在每个变量中。 <<例如,输入数字为 18446744073709551615,则二进制为 1111111111111111111111111111111111111111111111111111111111111111。 (它不必转换为二进制,只是告诉你如何划分)像这样划分 1111111111111111 / 1111111111111111 / 1111111111111111 / 1111111111111111 分为四部分>>
并将每个部分设为十六进制 <像这样,1111111111111111 / 1111111111111111 / 1111111111111111 / 1111111111111111 -> ffff / ffff / ffff / ffff>
最后,将 ffff / ffff / ffff / ffff 转换为十进制数 65535 / 65535 / 65535 / 65535
对不起,因为我的英语不好,但我需要你的帮助......;(我的水平很低,所以当你解释时,我需要一些示例代码来查看和理解。
感谢您阅读我的问题!
假设一个字节是八位字节vulgaris ,八字节 integer 是 64 位。 然后:
<inttypes.h>
和<stdint.h>
。<stdint.h>
中的uint64_t
定义一个 64 位无符号 integer 变量x
。scanf("%" SCNu64, &x)
从输入中读取数字。scanf
的返回值。 如果不是 1,则读取一个数字,打印错误消息并退出程序。x
右移 0、16、32 和 48 以将每个部分移至低位。0xffffu
的 AND 操作来执行此操作,或者您可以通过将值分配给仅存储 16 位的uint16_t
变量来执行此操作。uint16_t
变量中,则可以使用printf("%" PRIu16, variable);
打印它们。 . 如果它们位于其他变量或表达式类型中,则需要不同的转换说明符,例如PRIu64
如果您有uint64_t
表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.