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)相关推荐

  1. python数组 swig_使用SWIG Python动态绑定C++对象

    SWIG(Simplified Wrapper and Interface Generator)是一个为C/C++库提供脚本调用支持的工具,支持Lua, Perl, Python, Go等多种脚本语言 ...

  2. Python GUI编程-了解相关技术[整理]

    Python GUI编程-了解相关技术[整理] 我们可以看到,其实python进行GUI开发并没有自身的相关库,而是借用第三方库进行开发.tkinter是tcl/tk相关,pyGTK是Gtk相关,wx ...

  3. python代码封装供第三方使用_python发博客

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python生成csdn博客分享图一.前言我们分享博客的方式有很多种,最常见的无 ...

  4. Python 程序封装-打包成exe程序

    Python 程序封装-打包成exe程序 前言 一. Python 打包工具-Pyinstaller 二.打包具体过程 1. 打包成仅包含一个独立的exe程序 2. 打包成包含文件夹的程序,内有相关的 ...

  5. Python取top N相关的模块:heapq模块

    Python取top N相关的模块:heapq模块 原文:[Python]Python取top N相关的模块:heapq模块_小怪孩的成长之路-CSDN博客_python 取top 最近在程序中需要取 ...

  6. python映射类型-python映射类型的相关介绍

    映射类型是一类可迭代的键-值数据项的组合,提供了存取数据项及其键和值的方法,在python3中,支持两种无序的映射类型:内置的dict和标准库中的collections.defaultdict类型. ...

  7. Python Scrapy 安装及相关配置

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python Scrapy 安装及相关配置 环境 win10 Python:3.6.7 Scrapy:2.4.1 Python 安装

  8. Hadoop的Python语言封装

    Hadoop的Python语言封装 Gao Ang 发表于 2010年05月25日 11:38 | Hits: 245 Hadoop使 用Java语言实现,编写具体的应用业务除了借助Hadoop的Ja ...

  9. Python函数封装:利用正则表达式compile、findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容

    Python函数封装:利用正则表达式compile.findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容 目录 利用正则表达式compile.findall对 ...

最新文章

  1. R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
  2. c++ string 拼接_String类5个常见面试题的解答过程和原理
  3. ACL 2019 知识图谱的全方位总结
  4. 什么是PCB板上的鼠牙洞?
  5. etherpad an interactive approach for combining multiple sentences from different students in class
  6. android+建模工具,什么是适用于Android Studio的3D模型环境的最佳工具
  7. [think]需求从来就没变过,变的是我们对需求的理解
  8. android 关于 textview首行缩进 显示图片、文字问题
  9. Express入门( node.js Web应用框架 )
  10. txt替换回车键符号怎么打_电脑小于等于符号≤怎么打
  11. JS表格插件(学习使用)
  12. python实现ncm转mp3_网易云音乐ncm格式分析以及ncm与mp3格式转换
  13. 12月1日高级软件测试例会记录
  14. Android自适应国际化语言
  15. 2016集训队论文吉如一
  16. 量化投资学习——行业轮动规律
  17. 针对全局的接口出入参加解密-AES/ECB/PKCS5Padding
  18. GitHub 上最适合初学者的开源项目——Python 篇
  19. 计算机会计期末试题及答案,山东大学网络教育期末考试试题及答案-会计信息系统 A_3...
  20. 源支付聚合免签支付系统

热门文章

  1. shell脚本和常用命令
  2. 「CF 932E」 Team Work
  3. .net跨防火墙链接oracle连接池链接长时间无通讯数据被断开后报错问题解决
  4. 《淘宝网》质量属性简析
  5. webdriver---API---(java版) 高级应用
  6. textview根据文字行数自动变化大小
  7. WebSocket简单使用(二) - 客户端
  8. 做网络需要掌握的56句话
  9. 二叉链表之寻找两节点的最近公共祖先☆
  10. ubuntun opencv 编译成64_19、OpenCV图像平滑处理