unsigned char* を印刷可能な16進文字列に変換する方法を学ぶために、私はたくさんグーグルで検索しました。これまでのところ、すべてがどのように機能するか、および符号付き文字と符号なし文字の違いを少し理解しています。
私が見つけたこの関数が何をするのか教えてもらえますか? unsigned char* (ハッシュされた文字列) を印刷可能な文字列に変換する関数を開発するのを手伝ってくれませんか?
次の関数はこれを行いますか:
- char 配列 string の 1 文字おきに反復します
- 各ループで、位置 string[x] で char を読み取り、それを符号なし数値 (小数点以下 2 桁の精度) に変換します次に、変換された char(number?) を変数 uChar にコピーします。
- 最後に、unsigned char uChar を 16 進文字列に格納します
void AppManager :: stringToHex( unsigned char* hexString, char* string, int stringLength )
{
// Post:
unsigned char uChar = 0;
for ( int x = 0; x<stringLength; x+=2 )
{
sscanf_s(&string[x], "%02x", &uChar);
hexString[x] = uChar;
}
}
つまり、文字列内の文字を unsigned(& 2dcp) に変換して、正しく 16 進文字列に格納できるようにすることを意味すると思います。小数点以下 2 桁にすると、符号付き (その文字が符号付きの場合) から符号なしへの単純な変換で、まったく異なる文字列が得られるのはなぜですか?
unsigned char* がある場合、それを画面に出力できるように変換するにはどうすればよいですか?