将包含十六进制值的字符串转换为c中的char字节

时间:2013-11-28 16:07:26

标签: c++ c string

嘿伙计们,我正在使用需要检查字节的软件,可以这样说:

char id = 0xa2;

众所周知,这是十六进制的char字节,我需要的是一种从相同十六进制数的txt文件中读取的方法,并将其与id进行比较。 正如你从文件中读到的那样你可能会注意到你所拥有的是一个包含字符串的char指针,让我们说0xa2我需要一种方法来比较这两个值以检查它是否是相同的ID显然我知道其中一个值必须转换为匹配另一个,我只是不知道该怎么做,我尝试了几种方法

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

最简单的方法是将char转换为字符串。 E,G,

char idStr[5];
sprintf(idStr, "0x%02x", (unsigned char)id);

将idStr与从文件中读取的字符串进行比较。

案例可能是一个问题,显然0xA2和0xa2应该相等。

答案 2 :(得分:0)

我可以建议以下解决方案。我使用字符串流而不是文件流。

    std::istringstream is( "0xa2" );

    char id = '\xa2';

    int x;

    is >> std::hex >> x;

    if ( id == static_cast<char>( x ) ) std::cout << "They are equal each other" << std::endl;