Python C AP????????????????????????

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python C AP????????????????????????相关的知识,希望对你有一定的参考价值。

???????????????   signed   ??????   ??????   ??????   main??????   init   ??????   char   

??????

????????????Python?????????????????????????????????Python???????????????????????????????????????C???Python????????????????????????????????????

Python??????????????????????????????

?????????Python?????????????????????Py_Initialize()????????????

Py_IsInitialized()????????????Python?????????????????????????????????True????????????False????????????

C/C++?????????Python????????????????????????????????????

??????????????????????????????Py_Finalize()???

????????????????????????Python????????????

?????????

#include <stdio.h>
#include <Python.h>
using namespace std;

int main() {

    // ?????????Python?????????
    Py_Initialize();
    // ??????Python?????????????????????
    if (Py_IsInitialized() == 0){
        printf("fal to initialize Python
");
        return -1;
    }

    printf("server start
");

    // ??????Python?????????
    Py_Finalize();
    return 0;
}

?????????????????????:

?????????Python2??????????????????Python3?????????????????????Python??????????????????Python3?????????
g++ -I/usr/include/python2.7 -c main.cpp
g++ -o main main.o -L/usr/local/lib -lpython2.7 -lrt -lpthread -lutil -ldl

PyObject

Python???????????????????????????????????????????????? ??????????????????????????????Python???????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????PyObject?????????????????????Python?????????????????????????????????PyObject *??? ???????????????Py_REFCNT???Py_TYPE??????????????????

???????????????????????????

Py_TYPE:  ??????Python?????????????????????
Py_REFCNT??? Python??????????????????
Py_SIZE:  ??????Python????????????
????????????...

Py_BuildValue

??????????????????C????????????????????????????????????Python???????????????????????????

??????????????????

s(str???None)[char *]
?????????utf-8???????????????null?????????C??????????????????Python str???????????????C??????????????????NULL????????????None???

s???(str???None)[char *???int]
?????????utf-8????????????C??????????????????????????????Python str???????????????C??????????????????NULL????????????????????????None???

y(??????)[char *]
?????????C??????????????????Python?????????????????????C??????????????????NULL????????????None???

y???(??????)[char *???int]
?????????C??????????????????????????????Python???????????????C??????????????????NULL????????????None???

z(str???None)[char *]
???s?????????

z???(str???None)[char *???int]
???s????????????

u(str)[Py_UNICODE *]
???Unicode(UCS-2???UCS-4)????????????null???????????????????????????Python Unicode???????????????Unicode??????????????????NULL????????????None???

u???(str)[Py_UNICODE *???int]
???Unicode(UCS-2???UCS-4)????????????????????????????????????Python Unicode???????????????Unicode??????????????????NULL???????????????????????????None???

U(str???None)[char *]
???s?????????

U???(str???None)[char *???int]
???s????????????

i(int)[int]
????????????C int?????????Python???????????????

b(int)[char]
??????C char?????????Python???????????????

h(int)[short int]
????????????C short int?????????Python???????????????

l(int)[long int]
???C long int?????????Python???????????????

B(int)[unsigned char]
???C unsigned char?????????Python???????????????

H(int)[unsigned short int]
???C unsigned short int?????????Python???????????????

I(int)[unsigned int]
???C unsigned int?????????Python???????????????

k(int)[unsigned long]
???C unsigned long?????????Python???????????????

L(int)[long long]
???C long long?????????Python???????????????

K(int)[unsigned long long]
???C unsigned long long?????????Python???????????????

n(int)[Py_ssize_t]
???C Py_ssize_t?????????Python?????????

c(?????????1?????????)[char]
??????????????????C int??????????????????1???Python???????????????

C(?????????1???str)[int]
??????????????????C int??????????????????1???Python str?????????

d(float) [double] 
???C double?????????Python????????????

f(float) [float] 
???C float?????????Python????????????

D(complex) [Py_complex *]
???C Py_complex???????????????Python?????????

O(object) [PyObject *]
?????????Python???????????????(??????????????????????????????1)???????????????????????????NULL?????????????????????????????????????????????????????????????????????????????????????????????Py_BuildValue()?????????NULL????????????????????????????????????????????????????????????SystemError???

S(object) [PyObject *]
???O??????

N((object) [PyObject *]
???O???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

O???(object) [converter, anything] 
?????????????????????????????????????????????Python???????????????????????????????????????(??????void *??????)???????????????????????????????????????Python????????????????????????????????????NULL???

(items) (tuple) [matching-items] 
????????????C????????????????????????????????????Python?????????

[items](list) [matching-items]
????????????C????????????????????????????????????Python?????????

{items}(dict) [matching-items] 
????????????C????????????Python????????????????????????C????????????????????????????????????????????????????????????
????????????????????????????????????????????????SystemError???????????????NULL???

???????????????Python??????

??????Py_BuildValue?????????????????????

void int_object(){
    // ???????????????
    PyObject *py_ival = Py_BuildValue("i", -5987);   // Python???????????????
    PyObject *py_ival2 = PyLong_FromLong(-8979);
    int ival = PyLong_AsLong(py_ival);   // ???Python????????????????????????C??????????????????
    int ival2 = PyLong_AsLong(py_ival2);   // ???Python????????????????????????C??????????????????
    printf("ival = %d, ival2 = %d
", ival, ival2);

    // ???????????????
    PyObject *py_uval = Py_BuildValue("I", 465486);   // Python???????????????
    PyObject *py_uval2 = PyLong_FromUnsignedLong(1654864);
    unsigned int uval = PyLong_AsUnsignedLong(py_uval);        // ???Python????????????????????????C??????????????????
    unsigned int uval2 = PyLong_AsUnsignedLong(py_uval2);        // ???Python????????????????????????C??????????????????
    printf("uval = %u, uval2 = %u
", uval, uval2);
}

??????????????????Python??????

void long_object(){
    // ???????????????
    PyObject *py_lval = Py_BuildValue("L", 45648946484984);   // Python ?????????
    long long c_lval = PyLong_AsLongLong(py_lval);   // ?????????C????????????
    printf("clval = %lld
", c_lval);

    // ???????????????
    PyObject *py_lval2 = PyLong_FromLongLong(234234623454525);   // PyLong_FromLongLong ????????????????????????Python?????????
    long long c_lval2 = PyLong_AsLongLong(py_lval2);   // ?????????C????????????
    printf("clval2 = %lld
", c_lval2);
}

?????????????????????Python??????

void double_object(){
    // ???????????????
    float fval = 632.045;
    PyObject *py_fval = Py_BuildValue("d", fval);   // Python ????????????
    float c_fval = PyFloat_AsDouble(py_fval);    // C???????????????
    printf("fval = %f
", c_fval);

    // ???????????????
    double  dval = 48941546.578;
    PyObject *py_dval = PyFloat_FromDouble(dval);   // Python ????????????
    double c_dval = PyFloat_AsDouble(py_dval);   // C???????????????
    printf("c_dval = %lf
", c_dval);
}

????????????????????????

void boolean_object(){
    // ???????????????
    bool bval = true;   // false ??????
    PyObject *py_bval = Py_BuildValue("b", bval);   // Python ????????????
    int c_bval = PyInt_AsLong(py_bval);
    printf("c_bval = %d
", c_bval);

    // ???????????????
    bool bval2 = false;
    PyObject *py_bval2 = PyBool_FromLong(bval2);   // Python ????????????
    int c_bval2 = PyInt_AsLong(py_bval2);
    printf("c_bval2 = %d
", c_bval2);
}

??????Python string??????

void string_object(){
    // ???????????????
    const char *pstr = "this is a test";
    PyObject *py_str = Py_BuildValue("s", pstr);   // Python ???????????????
    char *c_pstr = PyString_AsString(py_str);   // ??????C???????????????
    printf("c_pstr = %s
", c_pstr);

    // ???????????????
    const char *pstr2 = "this is a test1";
    PyObject *py_str2 = PyString_FromString(pstr2);   // Python ???????????????
    char *c_pstr2 = PyString_AsString(py_str2);   // ??????C???????????????
    printf("c_pstr2 = %s
", c_pstr2);

    // ???????????????????????????????????????
    // ???????????????
    const int mem_len = 1024;
    char *mem = new char[mem_len];
    PyObject *py_mem = Py_BuildValue("s#", mem, mem_len);  // 1. ??????????????? 2. ????????????????????? 3. ???????????????
    int c_data_len = PyString_Size(py_mem);
    printf("c_data_len = %d
", c_data_len);

    // ???????????????
    PyObject *py_mem2 = PyString_FromStringAndSize(mem, mem_len);
    int c_data_len2 = PyString_Size(py_mem2);
    printf("c_data_len2 = %d
", c_data_len2);

}

??????unicode???????????????

void unicode_object(){
    const char *p_ustr = "?????????";
    PyObject *py_unicode = PyUnicode_FromString(p_ustr);  // ???C??????????????????Python???unicode

    // ???unicode??????C????????????
    PyObject *py_utf8 = PyUnicode_AsUTF8String(py_unicode);   // ???unicode??????utf-8
    const char *c_string = PyString_AsString(py_utf8);   // ???utf-8??????c????????????
    printf("c_utf8 = %s
", c_string);

    // ?????????unicode?????????
    // ????????????unicode?????????
    PyObject *py_unicode_fmt = PyUnicode_FromFormat("%s%d%s", "?????????", 18, "???");
    // ???unicode???C?????????
    PyObject *py_utf8_fmt = PyUnicode_AsUTF8String(py_unicode_fmt);
    const char *utf8_fmt = PyString_AsString(py_utf8_fmt);
    printf("utf8_fmt = %s
", utf8_fmt);
}

??????Py_None

Py_None????????????????????????

PyObject* none_object(){
    Py_RETURN_NONE;   // ???????????????return
}

main??????

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Python.h>
int main() {

    // ?????????Python?????????
    Py_Initialize();
    // ??????Python?????????????????????
    if (Py_IsInitialized() == 0){
        printf("fal to initialize Python
");
        return -1;
    }

    printf("server start
");
    int_object();
    long_object();
    double_object();
    boolean_object();
    string_object();
    unicode_object();
    PyObject *py_ret = none_object();
    if (py_ret == Py_None){
        printf("is none object
");
    }else{
        printf("is not none object
");
    }

    // ??????Python?????????
    Py_Finalize();
    return 0;
}

以上是关于Python C AP????????????????????????的主要内容,如果未能解决你的问题,请参考以下文章

监控无线AP是否在线python脚本

Arg 解析器错误:args = vars(ap.parse_args()) 发生异常:python

python AP算法示例

python 一般AP统计概率模拟脚本。

用python编写的无线AP扫描器

Aspen Plus Automation in Python