如何将字符串转换为TYPES.LPTSTR.targetType.array

How to convert a string to TYPES.LPTSTR.targetType.array

本文关键字:TYPES LPTSTR targetType array 转换 字符串      更新时间:2023-09-26

我假设了一些定义如下:

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的两个空终止符