概述
char *
void change_char_ptr(char *s) {
// edit ptr value
s[0] = 'p';
printf("void change_char_ptr(char *s) s[0]='p' -> %sn", s);
}
Python2(默认utf-8) 传入
# -*- coding: utf-8 -*-
s1 = "xhh0608"
s1_ptr = ctypes.c_char_p(s1) # string -> char*
# void print_char_ptr(char *s)
xhh_lib.print_char_ptr(s1_ptr)
print("[1] after print_char_ptr s1_ptr.value -> ", s1_ptr.value)
Python3(默认unicode) 传入 utf-8
# -*- coding: utf-8 -*-
s1 = "xhh0608"
s1_ptr = ctypes.c_char_p(s1.encode("utf-8")) # string -> char*
# void print_char_ptr(char *s)
xhh_lib.print_char_ptr(s1_ptr)
print("[1] after print_char_ptr s1_ptr.value -> ", s1_ptr.value)
编码方案
用通信理论的思路可以理解为:
unicode是信源编码,对字符集数字化
utf8是信道编码,为更好的存储和传输
UTF-8 是「编码规则」
编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
UTF-8 顾名思义,是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节:
Unicode 是「字符集」
字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
Unicode 字符集为每一个字符分配一个码位,例如「知」的码位是 30693,记作 U+77E5(30693 的十六进制为 0x77E5)。
最后
以上就是年轻日记本为你收集整理的【Python】Python2 & Python3 ctypes 字符串编码类型转换的全部内容,希望文章能够帮你解决【Python】Python2 & Python3 ctypes 字符串编码类型转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复