将Char *变量转换为C中的uint32_t

时间:2015-04-12 13:08:45

标签: c sqlite

我有一个Sqlite数据库,我正在使用这个循环读取值:

int i;

for(i=0; i<argc; i++) // [0] = IP, [1] = seq, [2] = count
{
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}

if (atoi(argv[2]) > stealthBeta)
{
    confirmSEQ((uint32_t)argv[1]);
}

argv[1]中的值作为UNSIGNED INT存储在数据库中,并正在正确地写入控制台,但是当我调用该函数时,我的编号错误。

我已经尝试过它,但它并没有完全正常工作。从char*uint32_t的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

要将字符串转换为其代表的数字,请使用strtol()中的strtoul()<stdlib.h>strtoul()解析unsigned long,保证至少32位宽。将0作为base参数传递可以转换前缀为0x的十六进制表示形式。前缀为0的值将被解析为八进制,否则解析将以十进制形式完成。

#include <stdlib.h>

...

if (strtol(argv[2], NULL, 0) > stealthBeta) {
    confirmSEQ((uint32_t)strtoul(argv[1], NULL, 0));
}

答案 1 :(得分:0)

使用atoi()转换为int

使用(unsigned)atoi()转换为unsigned

例如,在您的情况下:

if (atoi(argv[2]) > stealthBeta)
{
    confirmSEQ((uint32_t)atoi(argv[1]));
}