以下のプログラムは文字列内の文字を16進数、2進数表記したものです。
2進数表記の部分は理解をできたのですが、16進数表記のフォーマット指定子の(%0*X)が何を表しているのかわかりません。(16進数のフォーマット演算子が%Xであることは知っています。)
また、printfでの引数である{(CHAR_BIT+3)/4}は何のために行っているのかも同時に解説してほしいです。
色々調べてみましたが、納得のいく答えが得らえれませんでした。
基本的なことで本当に申し訳ありませんがよろしくお願いいたします。
c
1/* 文字列内の文字を16進数と2進数で表示 */ 2 3#include <stdio.h> 4#include <limits.h> 5 6/*--- 文字列内の文字を16進数と2進数で表示 ---*/ 7void str_dump(const char *s) 8{ 9 do { 10 int i; 11 12 printf("%c %0*X ", *s, (CHAR_BIT + 3) / 4, *s); */←わからない*/ 13 for (i = CHAR_BIT - 1; i >= 0; i--) 14 putchar(((*s >> i) & 1U) ? '1' : '0'); 15 putchar('\n'); 16 } while (*s++ != '\0'); 17} 18 19int main(void) 20{ 21 str_dump("STRING"); 22 23 return 0; 24} 25
> 色々調べてみましたが
printfのフォーマットについては、どのような情報源を確認しましたか?
フォーマット指定子一覧(https://www.k-cube.co.jp/wakaba/server/format.html)
C言語 printfのフォーマット指定子(https://qiita.com/keitean/items/7cd52af571d27a1173d0)
ここらへんです。
過去の質問を参照。
https://teratail.com/questions/25482
回答1件
あなたの回答
tips
プレビュー