您好,我需要您的帮助将void *(十六进制数字)转换为十进制数字。 我在代码中使用了sqlite3,回调函数给了我一个&data,其中包含行数。 问题是:我需要将&data(十六进制数字)保存为int。 也许有另一种方法可以执行此操作,但是我尝试将&data十六进制转换为十进制int,问题是要转换void *。 我尝试将void *转换为int,但是将运行时间问题转换为指针。 如果您能帮助我进行转换,我将很高兴。 谢谢。

一些代码-

void* data = nullptr;
rc = sqlite3_exec(db, str.data(), callback, &data, &zErrMsg);
int id = 0;

if (data != nullptr)
{
    int dataa = *((int *)data); // run time error
    istringstream(dataa) >> std::hex >> id; \\ istringstream can't convert void* // NEED CHANGE
}
return id;

回调函数-

if (argc == 0) {
     user_exist = false; return 0;
}
else {
    user_exist = true; 
    if (notUsed != NULL) {
        cout << argv[0] << endl;
       ((int)notUsed) = atoi(argv[0]); 
    }
 }
return 0; 

===============>>#1 票数:0

sqlite3_exec()仅在您可以实际处理回调中的数据时才有用。 实际上,通常应该使用sqlite3_prepare_v2() / sqlite3_step() / sqlite3_finalize()函数来读取数据:

sqlite3_stmt *stmt;
int rc = sqlite3_prepare_v2(db, "SELECT ...", -1, &stmt, NULL);
if (rc != SQLITE_OK) {
    print("error: ", sqlite3_errmsg(db));
    return -1;
}
rc = sqlite3_step(stmt);
if (rc != SQLITE_ROW && rc != SQLITE_DONE) {
    print("error: ", sqlite3_errmsg(db));
} else {
    user_exist = rc == SQLITE_ROW;
}
sqlite3_finalize(stmt);

(对于大多数其他查询,只要获得SQLITE_ROW ,您就可以调用sqlite3_column _ *()函数来读取实际值。)

  ask by 0xAlon translate from so

未解决问题?本站智能推荐:

1回复

C ++程序将十进制转换为十六进制

我编写了一个程序,使用对字母的切换命令将十进制字符串转换为十六进制,但是如果使用char,该程序将无法正常运行! 没有切换,我将无法处理高于9的数字。我希望您能理解我,因为我的语言不太好。 所以这是我的程序 顺便说一句,如果将它设置为int而不是char它可以正常工作,但是它变成1
3回复

C ++:十六进制到十进制转换功能-无法获得正确的输出

我正在尝试将十六进制值转换为十进制。 我只是想提取一个数字(0-9)或一个字母(AF),然后使用另一个函数将其转换为数字值,然后将这些值压入堆栈中(我本可以使用矢量,但是这次选择堆栈)。 然后,我只是想获取十进制值,并且由于堆栈向后工作,因此应该井井有条。 如下所示,正确的输出应为17
1回复

十六进制,二进制和八进制至十进制转换器无法正常工作C ++

所以我的任务很简单,但是由于某种原因它不起作用。我必须在输入中输入2个数字。第一个显示我希望数字(16,2,8)转换为十进制的基数,第二个显示我的任务示例是:2 1111; 16 F; 8 1;答案应该是15,15,1。 另外,您将必须确定这是一个无休止的循环,因为我的老师检查他所举的例子的
6回复

在C ++中将十六进制转换为整数的最快方法是什么?

我正在尝试尽快将十六进制char转换为整数。 这只是一行: int x = atoi(hex.c_str); 有更快的方法吗? 在这里,我尝试了一种更加动态的方法,而且速度稍快一些。
2回复

C ++将长十六进制字符串转换为二进制

我在这里找到了类似的解决方案: 缺少来自C ++ hex2bin的标点符号并使用该答案: 那就像在例子中打印: 但对于较长的十六进制字符串似乎效果不佳,例如: 结果是: 那么如何用C ++完成呢。 我对php更熟悉,并且有完成所有工作的函数hex2bin。
1回复

C ++中的MIPS转换器,如何转换为十六进制

我正在C ++中创建一个接受MIPS汇编指令的转换器,如添加寄存器2和3中的“ add 1,2,3”,然后将结果放入寄存器1中。最后,我将所有内容保存到一个表示机器代码的字符串中应该是输出,但是我想以十六进制格式显示,而是以十进制输出 文字输出正确= 000000231000001000
1回复

在C ++中将BSTR十六进制字符串转换为BYTE *

我试图将BSTR字符串转换为Hex BYTE * 我收到来自COM作为BSTR的响应 我在tlh中的RAW方法 BSTR aa = L“ 559EB7F000260044F06BB01A3A000055”; 我想将其转换为BYTE myHex [16]
4回复

如何在C ++中将二进制编码的十进制转换为int

在c ++中,给定十六进制值为0x80(以uint16_t形式提供),我将如何将数字提取到int变量中。 我不想将十六进制转换为int,而是想将数字提取为int,例如,对于0x80,我想要80而不是128的int;对于0x55,我想要55而不是85,等等。 只有十六进制数字的数字将永远
4回复

如何将十六进制字符串转换为十进制

当我尝试这个 我得到一个ArgumentException这样说, 浮点数据类型不支持数字样式AllowHexSpecifier。 和column [1] = 4B414D000000011613C3 btw。 我在做什么错以及如何解决?
3回复

将十六进制数字转换为十进制数字

我有一个文本文件,其中一行用空格分隔数字,如以下示例所示: 使用C程序解析文件后,结果应保存在向量中,其内部结构应为: 基本上我需要将以0x开头的数字转换为十进制数字。 我试过将所有元素存储在char向量中,然后将它们转换为数字,但没有成功。 对于使用C语言编写的任何