-3

如何将以下内容转换为VB?这是什么意思?

unsigned char *s = (unsigned char *)(void *)serialNum;  
4

2 回答 2

0

从上下文很难判断。大概serialNum是一个无类型的(void *在 C 中)指针。

指针值被复制到s中,其类型为“指向无符号字符的指针”。

代码看起来好像有人在 中构建了一个字符串serialNum,但指针以非类型化方式共享,因此接收者需要知道它应该被视为unsigned char *.

于 2013-05-21T10:38:56.250 回答
0

根据我对VB的了解,我不确定是否有翻译。

看起来代码的意图是获取一个整数值 ( serialNum) 并将其用作字节序列 ( ) 的地址s

unsigned char *s声明s为指向unsigned char; 存储的值是单个字节 s地址或序列的第一个字节。

(unsigned char *)并且(void *)强制转换操作;它们用于将表达式的类型转换为不同的类型。C 的类型规则是不能直接将整数值分配给指针变量;整数值必须使用强制转换操作转换为指针类型。 (void *) serialNum将表达式的类型serialNumint(或其他)转换为void *,这是 C 对“通用”指针的想法。 (unsigned char *)将前一个表达式的结果转换为指向unsigned char.

强制转换操作是多余的(void *)IMO,以下应该也可以工作:

unsigned char *s = (unsigned char *) serialNum;

同样,我不知道 VB 中的适当翻译是什么。

于 2013-05-21T11:26:09.847 回答