我找到了将十六进制字符串转换为signed int
using的代码strtol
,但我找不到短 int (2字节)的东西。这是我的一段代码:
while (!sCurrentFile.eof() )
{
getline (sCurrentFile,currentString);
sOutputFile<<strtol(currentString.c_str(),NULL,16)<<endl;
}
我的想法是读取一个具有 2 字节宽值的文件(如 0xFFEE),将其转换为带符号的 int 并将结果写入输出文件。执行速度不是问题。
我可以找到一些方法来避免这个问题,但我想使用“单线”解决方案,所以也许你可以为此提供帮助:)
编辑:文件如下所示:
0x0400
0x03fe
0x03fe
...
编辑:我已经尝试过使用十六进制运算符,但在这样做之前我仍然必须将字符串转换为整数。
// This won't work as currentString is not an integer
myInt << std::hex << currentString.c_str();