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) 就可以了
是这样的,U16cs
=L"abc",单字符内容是可变的,然后要根据内容比较作查询现在问题大概是这样,宏定义了
单字节字符串
"FILE01"
"FIFE02"
U8
filename
=
"C:\\"
strcat(filename,"FILE01")
最后要把filename变双字符传给应用函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)