[英]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.