unsigned long を 8 ビットの 16 進文字列に変換する C++ 関数があります。8 ビットの 16 進文字列を取り、それをバイトを表す符号なし整数に変換する逆関数を考え出す必要があります。
元の UINT -> char[8] メソッド:
std::string ResultsToHex( unsigned int EncodeResults)
{
std::cout << "UINT Input ==>";
std::cout << EncodeResults;
std:cout<<"\n";
char _HexCodes[] = "0123456789ABCDEF";
unsigned int HexAccum = EncodeResults;
char tBuf[9];
tBuf[8] = '\0';
int Counter = 8;
unsigned int Mask = 0x0000000F;
char intermed;
// Start with the Least significant digit and work backwards
while( Counter-- > 0 )
{
// Get the hex digit
unsigned int tmp = HexAccum & Mask;
intermed = _HexCodes[tmp];
tBuf[Counter] = intermed;
// Next digit
HexAccum = HexAccum >> 4;
}
std::cout << "Hex char Output ==>";
std::cout << tBuf;
std::cout << "\n";
return std::string(tBuf);
}
そして、これが私が書き込もうとしている関数で、入力としてchar [8]を受け取り、UINTに変換します。
unsigned int ResultsUnhex( char tBuf[9])
{
unsigned int result = 0;
std::cout << "hex char Input ==>";
std::cout << tBuf;
std:cout<<"\n";
//CODE TO CONVERT 8 char (bit) hex char into unsigned int goes here......
//
// while() {}
//
///
std::cout << "UINT Output ==>";
std::cout << result;
std::cout << "\n";
return result;
}
私はビットシフトが初めてです。どんな助けでも大歓迎です:)。