如何将以下内容转换为VB?这是什么意思?
unsigned char *s = (unsigned char *)(void *)serialNum;
从上下文很难判断。大概serialNum
是一个无类型的(void *
在 C 中)指针。
指针值被复制到s
中,其类型为“指向无符号字符的指针”。
代码看起来好像有人在 中构建了一个字符串serialNum
,但指针以非类型化方式共享,因此接收者需要知道它应该被视为unsigned char *
.
根据我对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 中的适当翻译是什么。