私は iOS 用の目的の C でいくつかの画像変換に取り組んでおり、合計画像サイズをバイト配列に保存するのにいくつかの問題があります..
私はいくつかの検索を行いました.stackoverflowには10進数から16進数への変換に関する多くの質問がありますが、それらはすべて、%x
printf(またはNSLog)を使用して16進数値を出力する方法を説明していますが、これは私が望むものではありません.
サイズ2500の画像があります
int totalSize = 2500;
このサイズを画像ヘッダーの特定のインデックスに追加したい
UInt8 headerData[HEADER_SIZE];
memset(headerData, 0, HEADER_SIZE);
//2500 dec = 9C4 hex
headerData[2] = 0xC4;
headerData[3] = 0x09;
headerData[4] = 0x00;
headerData[5] = 0x00; //image size total 4 bytes
このスレ見つけてやってみた
char hexval[5];
memset(hexval, 0, 5);
if (totalSize <= 0xFFFF){
sprintf(&hexval[0], "%0x", totalSize);
}
printf("%x %x %x %x", hexval[0], hexval[1], hexval[2], hexval[3]);
そしてそれは印刷されました
36 36 33 32
これは正しい値ではありませんか、ここで明らかな何かが欠けていますか?
EDIT:申し訳ありませんが、エンディアンの部分を入れ忘れました..リトルエンディアン形式で保存したいです。
注 : ここでも C ソリューションを適用できるため、C タグも追加しています。