我假设了一些定义如下:
var CONFIG = {
is64bit: ctypes.voidptr_t.size == 4 ? false : true,
ifdef_UNICODE: true};
var TYPES = {
CHAR: ctypes.char,
WCHAR: ctypes.char16_t};
TYPES.LPSTR = TYPES.CHAR.ptr;
TYPES.LPWSTR = TYPES.WCHAR.ptr;
TYPES.LPTSTR = CONFIG.ifdef_UNICODE ? TYPES.LPWSTR : TYPES.LPSTR;
我有一个这样的字符串:"OMNIKEY AG智能卡读卡器USB 0"
,我想将其转换为TYPES.LPTSTR.targetType.array
格式,其中如果它通过toString()显示,则如下所示:
ctypes.char16_t.array(36)(["O", "M", "N", "I", "K", "E", "Y", " ",
"A", "G", " ", "S", "m", "a", "r", "t", " ", "C", "a", "r", "d",
" ", "R", "e", "a", "d", "e", "r", " ", "U", "S", "B", " ", "0",
"x00", "x00"])
我的系统是64位
这实际上是这样做的:var st = "OMNIKEY AG Smart Card Reader USB 0"; var st_cArr = TYPES.LPTSTR.targetType.array(st.length+1)(st)
我选择了st.length+1
,因为默认情况下你有一个空终止符,我选择了+1
,所以你得到了x00
的两个空终止符