arduinoで動作チェックも兼ねたカウンターを作っておりました。
ここ数年、型を意識しないですむ言語ばかり扱っていたためか、久々にやらかしたのでメモ。
マイナスになる可能性がないカウンターなら、最初から符号なしにしましょう。
実際のところ
char cnt = 0; char tartget[20] = ""; cnt = 0xff & cnt sprintf(target, "%02x%s%s", cnt, "12","34");
とかでcharでカウンター回そうとしたら、以下のような挙動
7d 7f ff80
出力側はsprintfで"%02x"とかやってます。
これは最低桁数を保証してくれるもので、溢れればそのまんま出力されます!
今回は0xffと0x80の組と判断されたみたいですね……
このあたりはちゃんと解析したいトコですが、とりあえずこの場を凌ぐには
unsigned char型にして、符号を排除すれば措定通り80,81...と余計なffがない状態でいけます。