VB中如何将两个单字节合成一个双字节,例如我输入两个byte类型变量

VB中如何将两个单字节合成一个双字节,例如我输入两个byte类型变量,第1张

存在两个问题:

1、VB在计算Byte类型数的运算时,也是按Byte类型的位数来存放计算结果的,很显然,计算结果已经超出Byte的范围了;

2、计算结果不但已经超出Byte的范围,也超出Integer的范围了,所以DisNumber变量要定义为Long类型才行。

所以改为如下:

Private

Sub

Form_Load()

Dim

DisNumber

as

Long

'定义为Long型

Dim

a

As

Byte

Dim

b

As

Byte

a=&H80

b=&H0

DisNumber

=

a

*

256&

+

b

'把表达式中的最大数256设为Long型,VB就会按Long型存放计算结果了

TxtDisplay.Text

=

Format(DisNumber,

"##0")

End

Sub

补充:

那就再转换一下:

Private

Sub

Form_Load()

Dim

DisNumber

As

Long

'定义为Long型

Dim

a

As

Byte

Dim

b

As

Byte

a

=

&HFF

b

=

&H0

DisNumber

=

a

*

256&

+

b

'把表达式中的最大数256设为Long型,VB就会按Long型存放计算结果了

DisNumber

=

Val("&H"

&

Hex(DisNumber))

'转换为带符号整数(土法)

TxtDisplay.Text

=

Format(DisNumber,

"##0")

End

Sub

// 题主这个问题嘛,问的很有问题

// 计算机一般有两种文字储存方式,宽字节+多字

// 宽字节:用2或4个字节表示一个字(每种类型固定字节长度)

// USC-2, USC-4

// 多字节:用1到4个字节表示一个字(每种字用的字节不一样)

// GBK, BIG5, UTF-8

两个单字节变为一个双字节,意味着这两个单字节其实是一个双字节能表达的字符的分别字节?

// 假设是这样

/* 以GBK为例子,嗯,微软默认控制台内码为GBK */

比如“我”字,你得先查到内码为:CED2

从下面可以查....当然百度一下到处都是

http://www.mytju.com/classcode/tools/encode_gb2312.asp

// 然后发现,这个是多字节编码,所以不考虑大小端

unsigned char a[3]

a[0] = 0xCE a[1] = 0xD2 a[3] = 0x0

printf(a) 就可以了

/* 以USC-2为例子 */

查到“我”编码是0x6211

考虑到intel处理器都是小端(与我大摩托罗拉对着干)

unsigned char a[4]

a[0] = 0x11 a[1] = 0x62 a[2] = 0x0 a[3] = 0x0

wprintf((wchar_t *)a) 就可以了

是这样的,U16

cs

=L"abc",单字符内容是可变的,然后要根据内容比较作查询现在问题大概是这样,宏定义了

单字节字符串

"FILE01"

"FIFE02"

U8

filename

=

"C:\\"

strcat(filename,"FILE01")

最后要把filename变双字符传给应用函数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7926484.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存