当前位置: 高中信息技术 / 填空题
  • 1. (2017高三上·浙江模拟) 【加试题】数据的有损压缩:对多媒体数据进行有损压缩时,通常是以少量数据丢失作为代价的,比如对某8 bit量化的数据压缩为6bit量化,其算法可简单表示为:逐一删除各个字节的后2 bit,将删除除后的6 bit数据首尾相连,然后重新按照8bit一组构建字节,以十六进制显示。

    例如,压缩前的原始数据为:

    1111 1100 0101 1010 1011 0000  可表示为十六进制:FC 5A B0

      删除每字节的后2 bit:

    1111 1100 0101 1010 1011 0000

      首尾相连构建新的数据:

    11 1111 0101 1010 1100 表示为十六进制:... F5 AC

     自此,原数据进行了有损压缩。程序运行界面如下所示:

    实现上述算法的VB程序如下,但程序中加框处有误,请改正。

    Dim a(1 To 100) As Integer

    Const code = "0123456789ABCDEF"

    Const n = 100

    Private Sub FormLoad()‘ 以随机数模拟读取原始数据

      s = ""

      Randomize

      For i = 1 To n

      a(i) = Int(Rnd * 16)

        Text1.Text = Text1.Text +  ①

      Next i

    End Sub

    Private Sub Command1Click()

    For i = 1 To n

       t = t + HtoB(a(i))

    Next i

    For j = 1 To n * 4 Step 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, i, 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 * 2 + t3 * 4 + t4 * 8

     BtoH = Mid(code, s + 1, 1)

    End Function
    ①  ② 

微信扫码预览、分享更方便