如何将以下内容转换为VB?这是什么意思?
unsigned char *s = (unsigned char *)(void *)serialNum;
答案 0 :(得分:0)
从背景来看很难说清楚。据推测,serialNum
是一个未键入的(C中的void *
)指针。
指针值被复制到s
,其类型为“指向无符号字符的指针”。
代码看起来好像有人在serialNum
中构建了一个字符串,但指针是以非类型方式共享的,因此接收者需要知道它应该被视为unsigned char *
。
答案 1 :(得分:0)
从我对VB的了解很少,我不确定是否有翻译。
看起来代码的意图是取整数值(serialNum
)并将其用作字节序列(s
)的地址。
unsigned char *s
声明s
是指向unsigned char
的指针;存储在s
中的值是单个字节的地址或序列的第一个字节。
(unsigned char *)
和(void *)
是演员操作;它们用于将表达式的类型转换为其他类型。 C的类型规则是这样的,你不能直接为指针变量赋一个整数值;必须使用强制转换操作将整数值转换为指针类型。 (void *) serialNum
将表达式serialNum
的类型从int
(或其他)转换为void *
,这是C的“通用”指针的概念。 (unsigned char *)
将前一个表达式的结果转换为指向unsigned char
的指针。
(void *)
强制转换操作是多余的IMO,以下内容也可以正常工作:
unsigned char *s = (unsigned char *) serialNum;
同样,我不知道VB中的适当翻译是什么。