SWIG Python-C封装 char*相关问题(3)
2019独角兽企业重金招聘Python工程师标准>>>
上面已经说了,string的传入传出。
那么。当我们二进制输入输出怎么做呢?
根据官方说明:http://www.swig.org/Doc3.0/Python.html#Python_nn77
In some cases, users may wish to instead handle all byte strings as bytes objects in Python 3. This can be accomplished by adding SWIG_PYTHON_STRICT_BYTE_CHAR to the generated code:
%module char_to_bytes %begin %{ #define SWIG_PYTHON_STRICT_BYTE_CHAR %}char *charstring(char *s) {return s; }This will modify the behavior so that only Python 3 bytes objects will be accepted and converted to a C/C++ string, and any string returned from C/C++ will be converted to a bytes object in Python 3:
>>> from char_to_bytes import * >>> charstring(b"hi") # Byte string b'hi' >>> charstring("hi") # Unicode string Traceback (most recent call last):File "<stdin>", line 1, in ? TypeError: in method 'charstring', argument 1 of type 'char *'
我们修改文件:
C -->
#include "string.h"
#include <stdlib.h>
#include <stdio.h>char * get_str(char * str1)
{return str1;
}
char * get_str_addheader(char * str1)
{char * odata=(char *)malloc(100);sprintf(odata,"%s:%s","Header",str1);return odata;
}
char * get_str_inputbytes(char * str1,int len)
{char * odata=(char *)malloc(100);sprintf(odata,"%s:%s","Header",str1);return odata;
}
<--i-->
%module tsm%apply (char *STRING, int LENGTH) { (char * str1,int len) };%header%{#define SWIG_PYTHON_STRICT_BYTE_CHAR
%}%{
//头文件
extern char * get_str(const char * str1);
extern char * get_str_addheader(char * str1);
extern char * get_str_inputbytes(char * str1,int len);
%}
%newobject get_str_addheader;
extern char * get_str(const char * str1);
extern char * get_str_addheader(char * str1);
extern char * get_str_inputbytes(char * str1,int len);
<--
编译之后进行测试:
当加入
%header%{#define SWIG_PYTHON_STRICT_BYTE_CHAR
%}
输入变为byte,可以进行二进制处理。
但是,还是会遇到00会有结束。我们需要继续查看文档。。,处理呕吐打他
转载于:https://my.oschina.net/wangluxunteng/blog/1519170
SWIG Python-C封装 char*相关问题(3)相关推荐
- python数组 swig_使用SWIG Python动态绑定C++对象
SWIG(Simplified Wrapper and Interface Generator)是一个为C/C++库提供脚本调用支持的工具,支持Lua, Perl, Python, Go等多种脚本语言 ...
- Python GUI编程-了解相关技术[整理]
Python GUI编程-了解相关技术[整理] 我们可以看到,其实python进行GUI开发并没有自身的相关库,而是借用第三方库进行开发.tkinter是tcl/tk相关,pyGTK是Gtk相关,wx ...
- python代码封装供第三方使用_python发博客
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python生成csdn博客分享图一.前言我们分享博客的方式有很多种,最常见的无 ...
- Python 程序封装-打包成exe程序
Python 程序封装-打包成exe程序 前言 一. Python 打包工具-Pyinstaller 二.打包具体过程 1. 打包成仅包含一个独立的exe程序 2. 打包成包含文件夹的程序,内有相关的 ...
- Python取top N相关的模块:heapq模块
Python取top N相关的模块:heapq模块 原文:[Python]Python取top N相关的模块:heapq模块_小怪孩的成长之路-CSDN博客_python 取top 最近在程序中需要取 ...
- python映射类型-python映射类型的相关介绍
映射类型是一类可迭代的键-值数据项的组合,提供了存取数据项及其键和值的方法,在python3中,支持两种无序的映射类型:内置的dict和标准库中的collections.defaultdict类型. ...
- Python Scrapy 安装及相关配置
本文仅供学习交流使用,如侵立删!demo下载见文末 Python Scrapy 安装及相关配置 环境 win10 Python:3.6.7 Scrapy:2.4.1 Python 安装
- Hadoop的Python语言封装
Hadoop的Python语言封装 Gao Ang 发表于 2010年05月25日 11:38 | Hits: 245 Hadoop使 用Java语言实现,编写具体的应用业务除了借助Hadoop的Ja ...
- Python函数封装:利用正则表达式compile、findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容
Python函数封装:利用正则表达式compile.findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容 目录 利用正则表达式compile.findall对 ...
最新文章
- R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
- c++ string 拼接_String类5个常见面试题的解答过程和原理
- ACL 2019 知识图谱的全方位总结
- 什么是PCB板上的鼠牙洞?
- etherpad an interactive approach for combining multiple sentences from different students in class
- android+建模工具,什么是适用于Android Studio的3D模型环境的最佳工具
- [think]需求从来就没变过,变的是我们对需求的理解
- android 关于 textview首行缩进 显示图片、文字问题
- Express入门( node.js Web应用框架 )
- txt替换回车键符号怎么打_电脑小于等于符号≤怎么打
- JS表格插件(学习使用)
- python实现ncm转mp3_网易云音乐ncm格式分析以及ncm与mp3格式转换
- 12月1日高级软件测试例会记录
- Android自适应国际化语言
- 2016集训队论文吉如一
- 量化投资学习——行业轮动规律
- 针对全局的接口出入参加解密-AES/ECB/PKCS5Padding
- GitHub 上最适合初学者的开源项目——Python 篇
- 计算机会计期末试题及答案,山东大学网络教育期末考试试题及答案-会计信息系统 A_3...
- 源支付聚合免签支付系统