python3 ctypes printf

#coding=utf-8
from ctypes import *;
from platform import *;

cdll_names = {
    'Linux'  :'libc.so.6',
    'Windows':'msvcrt.dll'
    }

system_name = system()
#libc = cdll.LoadLibrary( cdll_names[system_name])
libc = CDLL( cdll_names[system_name])
msg = "Hello, world!\n"
libc.printf(msg)

# encode和decode提供 str 和 unicode 这两种的类型的互相转化。
# encode 把 unicode 转化成 str(byte string)
# decode 把 str(byte string) 转化成 unicode


msvcrt = cdll.msvcrt

# 直接编码成二进制
msvcrt.printf(b'%s',b'hello\n')


# 使用wprintf宽字符显示
msvcrt.wprintf("hello\n")


# 转码成UTF8、GBK编码
str = "中国string encode with Unicode\n"
print(str)
msvcrt.printf(str.encode('gbk'))    #输出: 中国string encode with Unicode
msvcrt.printf(str.encode('utf-8'))  #输出: 涓浗string encode with Unicode

# 
s = create_string_buffer(64)
msvcrt.sprintf(s,b"%s %d",b"hello",123)
print(s.value.decode('utf-8'))
print(s.value.decode())

# 参考:
# http://python.jobbole.com/86670/
# http://blog.sina.com.cn/s/blog_4a94a0db010136oj.html

 

posted @ 2017-08-09 14:58  未命名blogs  阅读(226)  评论(0编辑  收藏  举报