步骤一:输入明文字符,将该字符转换成ASCII;
步骤二:将ASCII码转换成十六进制字符串;
步骤三:将产生的十六进制字符串进行头尾互换并输出。
若用Python程序实现上述加密过程,请回答下列问题:
s=input("请输,入明文字符(大写字母或小写字母):")
a= #将字符转换为ASCII
b= #将ASCII码转换成十六进制字符串
B .
C .
D .
提示:int(x,16)函数实现将十六进制字符串x转换成十进制整数ASCII值。
s = "582319476"
i = 1: max = 0: res = ""
Randomize
Do While i <= Len(s) \ 3
tmp = Int(Rnd * 9 + 1)
If tmp >= max Then
res = res + Mid(s, tmp, 1)
max = tmp
i = i + 1
End If
Loop
执行该程序段后,变量res的值不可能是( )
s= “AaBb”:t=””
For i=1 To Len(s)
ch= Mid(s,1,1)
If ch>= “a”And ch<= “z”Then ch=Chr(Asc(ch)-32)
t=ch+t
Next i
Const SN = "〇一二三四五六七八九十百千"
Dim s1 As String, s2 As String, i As Integer
s1 = Text1.Text: s2 = "": i = 1
Do While i < Len(s1)
n1 = Val(Mid(s1, i, 1))
n2 = Val(Mid(s1, i + 1, 1))
If n1 <> 0 Then
If n1 = 0 And n2 <> 0 Then
i = i + 1
Loop
n1 = Val(Mid(s1, i, 1))
If n1 <> 0 Then
Text2.Text = s2
上述程序方框处可选语句为:
①s2 = s2 & Mid(SN, n1 + 1, 1) & Mid(SN, Len(s1) - i + 10, 1)
②s2 = s2 & Mid(SN, 1, 1)
③s2 = s2 & Mid(SN, n1 + 1, 1)
则(1)、(2)、(3)处语句依次是( )
s1 = "PROGRAM": s2 = ""
For i = 1 To 4
t = Int(Rnd * 4) * 2 + 1
Do While f(t)
t = Int(Rnd * 4) * 2 + 1
Loop
f(t) = True
s2 = s2 + Mid(s1, t, 1)
Next i
Label1.Caption = s2
数组f 各元素的初值为False,执行该程序段后,标签Label1上显示的内容可能是( )
求T值的方法如下:取某个灰度值k,将图像所有N个像素分成两类,灰度值小于k的作为背景像素,灰度值大于等于k 的作为前景像素,统计两类像素的个数分别为N1、N2,计算灰度值的均值分别为μ1、μ2,利用公式
计算出两类像素的差异值。当该值最大时,k即为要找的最佳灰度值T。若某区间段内有连续多个T满足要求,则T取中间值。
例如:图a所示图像像素的灰度值仅为0~5,统计0~5灰度值像素的个数依次为8、7、2、6、9、4,如图b所示。当k=2时,N1=15,N2=21,μ1=(0*8+1*7)/(8+7),μ2=(2*2+3*6+4*9+5*4)/(2+6+9+4),计算出差异值为2.5635。依此类推,计算差异值如图c所示。可知,当k=3时差异值最大,3是最佳灰度值T。

编写VB程序,实现如上功能。读取图像所有像素的灰度值后,单击按钮Command1,在标签Label1上显示T值。
Const N = 32 * 24
Dim a(1 To N) As Integer 'a 数组存储图像所有像素的灰度值
Private Sub Form_Load()
'读取图像中的所有像素的灰度值存入a数组,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim sum As Long, sum1 As Long, N1 As Long, N2 As Long
Dim μ1 As Double, μ2 As Double, diff As Double, max_var As Double
Dim t1 As Integer, t2 As Integer, T As Integer
Dim h(255) As Long
Dim c(255) As Long
max_var = 0: t1 = 0: t2 = 0: N1 = 0: N2 = 0: sum = 0: sum1 = 0
For i = 0 To 255
h(i) = 0: c(i) = 0
Next i
For i = 1 To N
h(a(i)) = h(a(i)) + 1
Next i
c(0) = h(0)
For i = 1 To 255
'统计灰度值小于等于i 的像素个数
sum = sum + i * h(i)
Next i
For k = 1 To 255
N1 = c(k - 1)
N2 = N - N1
If N1 <> 0 And N2 <> 0 Then
μ1 = sum1 / N1
μ2 = (sum - sum1) / N2
diff = N1 / N * N2 / N * (μ1 - μ2) ^ 2
diff = Round(diff, 4) 'Round 函数的作用是对diff 保留四位小数
If diff >= max_var Then
t1 = k
If diff > max_var Then
max_var = diff
End If
End If
Next k
T = (t1 + t2) \ 2
Label1.Caption = "将该图像分割为前景与背景两部分的最佳灰度值为:" & T
End Sub
s1 = "2019GaoKao"
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If ch >= "0" And ch <= "9" Then
ch = Str((Val(ch)+1) Mod 10)
s2 = ch + s2
ElseIf ch >= "a" And ch <= "z" Then
ch = Chr(Asc(ch) - 32) s2 = s2 + ch
End If
Next i
该程序运行后,s2的值是( )
PRIVATE SUB FORM_CLICK( )
A=VAL(INPUTBOX(“请输入第一个数”))
B=VAL(INPUTBOX(“请输入第二个数”))
C=VAL(INPUTBOX(“请输入第三个数”))
M=A
IF M>B THEN M=B
IF M>C THEN M=C
PRINT M
END SUB
1)将该字符的ASCII码转换成对应的2位十六进制数;
2)将产生的十六进制数互换位置;
3)步骤(2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的VB程序,功能如下:单击“生成密文”按钮Command1,程序依次将文本框Text1中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行界面如图所示

实现上述功能的VB程序如下:
Private Sub Command1_ Click()
Dim s As String, a As String, ans As String
Dim c As Integer, i As Integer
Dim c1 As Integer, c2 As Integer
Dim d1 As String, d2 As String
s= Text1. Text
ans =“”
For i=1 To Len(s)
a=Mid(s, i, 1)
c= Asc(a)
c1=c \16
c2= ①
d1= Mid(Str(c1), 2, 1) '使用Str(c1)将在字符c1前增加一个空字符
If c2>>=10 Then ② Else d2 = Mid(Str(c2), 2, 1)
ans= ③
Next i
Text2. Text= ans
End Sub
① ② ③
①原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;②原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;③原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身。
根据上述压缩方法,对应的解压缩方法示例如图所示。
小明学习了Python的PIL、matplotlib和numpy等模块知识后,现有图像文件“台州.bmp”,该文件的颜色模式为RGB,将该图像文件的每个像素点转换成灰度值(值为整数)后,使用上述压缩方法进行压缩并保存为文本文件。颜色RGB值转灰度值的公式如下:
灰度值=0.299×红色颜色分量+0.587×绿色颜色分量+0.114×蓝色颜色分量
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img = np.array(Image.open("台州.bmp"))
row,cols,rgb = img.shape
s=[]
for i in range(row):
for j in range(cols):
r,g,b = img[i,j]
hdz =
s.append(hdz)
ss = []:j = 0
while j<len(s)-1:
if s[j]!=s[j+1]:
if s[j]!=0:
ss.append(s[j])
else:
ss.extend() #extend 函数用于在列表末尾一次性追加另一个序列中的多个值
j+=1
else:
c = s[j]
for k in range(j+1,len(s)) :
if c!=s[k]:
break
else:
ss.extend([0,k-j,s[j]])
j=k
if j!=len(s):
ss.append(s[j])
f = open("台州 255.txt","w+")
f.write(",".join(map(str,ss)))
f.close()