题库 高中信息

题干

数据的有损压缩:对多媒体数据进行有损压缩时,以少量数据丢失作为代价的,比如对某8 bit量化缩为6 bit量化,其算法可简单表示为:逐一删除各个字节的后2 bit,将删除后的6 bit数据首尾相连,然后重新按照8 bit一组构建字节,以十六进制显示。
例如,压缩前的原始数据为:
11111100  010111010  10110000可表示为十六进制:FC  5A  B0
删除每字节的后2 bit:
111111  00  010110  10  101100  00
首尾相连构建新的数据:
11  11110101  10101100表示为十六进制:…F5  AC
自此,原数据进行了有损压缩。程序运行界面如下所示,

实现上述算法的VB程序如下,但程序中加框处有误,请改正。
Dim a(1 To 100) As Integer
Const code="0123456789ABCDEF"
Const n=100
Private Sub Form_Load()'以随机数模拟读取原始数据
s=""
Randomize
For i=1 To n

a(i)=Int (Rnd()*16)

Text1.Text=Text1.Text+  '①

Next i
End sub
Private Sub Command1_Click()
For i=1 To n

t=t+HtoB(a(i))

Next i
For j=l To n* 4 Step 8 '每8位一组每8位一组,取前6个字符

s=s+Mid(t,j, 6)

Next j
For i=1 To 4 *(n-1) Step 4 '每4位一组转为十六进制显示
Text2.Text= Text2.Text +BtoH (Mid(s,1,4))
Next i
End sub
Function HtoB (x As Integer) As String  '十六进十六进制转为二进制函数
t=""
m=0
Do While  '②

r=x Mod 2

m=m+1

t= Trim(r)+t     'trim()用于删除前导空格

x=x\2

Loop
HtoB=Mid("0000",1,4-m)+t
End Function
Function BtoH (y As String) As String '二进制转为十六进制函数
t1=Val(Mid(y,4,1))
t2=Val(Mid(y,3,1))
t3=Val(Mid(y,2,1))
t4=Val(Mid(y,1,1))
s=t1+t2*+t3*4+t4*8
BtoH= Mid(code,s+1,1)
End Function
(1)①处加框代码应改为________________________________________。
(2)②处加框代码应改为________________________________________。
上一题 下一题 0.99难度 None 更新时间:2020-03-30 10:09:23

答案(点此获取答案解析)