电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

C語言字符串轉(zhuǎn)換為Python字符串的方法

瀏覽:62日期:2022-07-15 16:07:51

問題

怎樣將C中的字符串轉(zhuǎn)換為Python字節(jié)或一個字符串對象?

解決方案

C字符串使用一對 char * 和 int 來表示, 你需要決定字符串到底是用一個原始字節(jié)字符串還是一個Unicode字符串來表示。 字節(jié)對象可以像下面這樣使用 Py_BuildValue() 來構(gòu)建:

char *s; /* Pointer to C string data */int len; /* Length of data *//* Make a bytes object */PyObject *obj = Py_BuildValue('y#', s, len);

如果你要創(chuàng)建一個Unicode字符串,并且你知道 s 指向了UTF-8編碼的數(shù)據(jù),可以使用下面的方式:

PyObject *obj = Py_BuildValue('s#', s, len);

如果 s 使用其他編碼方式,那么可以像下面使用 PyUnicode_Decode() 來構(gòu)建一個字符串:

PyObject *obj = PyUnicode_Decode(s, len, 'encoding', 'errors');/* Examples /*obj = PyUnicode_Decode(s, len, 'latin-1', 'strict');obj = PyUnicode_Decode(s, len, 'ascii', 'ignore');

如果你恰好有一個用 wchar_t *, len 對表示的寬字符串, 有幾種選擇性。首先你可以使用 Py_BuildValue() :

wchar_t *w; /* Wide character string */int len; /* Length */PyObject *obj = Py_BuildValue('u#', w, len);

另外,你還可以使用 PyUnicode_FromWideChar() :

PyObject *obj = PyUnicode_FromWideChar(w, len);

對于寬字符串,并沒有對字符數(shù)據(jù)進(jìn)行解析——它被假定是原始Unicode編碼指針,可以被直接轉(zhuǎn)換成Python。

討論

將C中的字符串轉(zhuǎn)換為Python字符串遵循和I/O同樣的原則。 也就是說,來自C中的數(shù)據(jù)必須根據(jù)一些解碼器被顯式的解碼為一個字符串。 通常編碼格式包括ASCII、Latin-1和UTF-8. 如果你并不確定編碼方式或者數(shù)據(jù)是二進(jìn)制的,你最好將字符串編碼成字節(jié)。 當(dāng)構(gòu)造一個對象的時候,Python通常會復(fù)制你提供的字符串?dāng)?shù)據(jù)。 如果有必要的話,你需要在后面去釋放C字符串。 同時,為了讓程序更加健壯,你應(yīng)該同時使用一個指針和一個大小值, 而不是依賴NULL結(jié)尾數(shù)據(jù)來創(chuàng)建字符串。

以上就是C語言字符串轉(zhuǎn)換為Python字符串的方法的詳細(xì)內(nèi)容,更多關(guān)于C語言字符串轉(zhuǎn)換為Python字符串的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 选宝石船-陆地水上开采「精选」色选机械设备-青州冠诚重工机械有限公司 | 碎石机设备-欧版反击破-欧版颚式破碎机(站)厂家_山东奥凯诺机械 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 脉冲除尘器,除尘器厂家-淄博机械 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 工作服定制,工作服定做,工作服厂家-卡珀职业服装(苏州)有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 环球周刊网| 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 |