分享
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord(‘A’),ord(‘A’)+6)]
bin2dec
二进制 to 十进制: int(str,n=10)
def bin2dec(string_num):
return str(int(string_num, 2))
dec2bin
十进制 to 二进制: bin()
def dec2bin(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem])
return ‘’.join([str(x) for x in mid[::-1]])
dec2hex
十进制 to 十六进制: hex()
def dec2hex(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 16)
mid.append(base[rem])
return ‘’.join([str(x) for x in mid[::-1]])
#二进制 to 十六进制
def bin2hex(string_num):
return dec2hex(bin2dec(string_num))
hex2dec
十六进制 to 十进制
def hex2dec(string_num):
return str(int(string_num.upper(), 16))
十六进制 to 二进制: bin(int(str,16))
def hex2bin(string_num):
return dec2bin(hex2dec(string_num.upper()))
#为字符串按照输入长度补’0’
def add_zero(str,gd_length):
if (str.len() < gd_length):
add_zero = ‘0’
for i in range(gd_length - str.len() - 1):
add_zero += ‘0’
str = add_zero + str
return str
def EPC(request):
#获取数据
CompanyPrefixLength = int(request.POST.get(‘CompanyPrefixLength’, 0))
FilterValue = request.POST.get(‘FilterValue’, 0)
UPC = request.POST.get(‘UPC’, 0)
SerialNumber = int(request.POST.get(‘SerialNumber’, 0)) - 1
StartSerialNumber = SerialNumber + 1
AllNumber = int(request.POST.get(‘AllNumber’, 0))
#创建excel表
wb = openpyxl.Workbook()
wa = wb.active
wa.column_dimensions[‘B’].width = 15
wa.column_dimensions[‘C’].width = 20
wa.column_dimensions[‘D’].width = 30
wa.append([‘ID’, ‘SerialNumber’, ‘BarCode’, ‘EPC’])
ID = 0
ExcelIndex = 1 # excel插入行数据索引
#Header 二进制8bits
Header_bits = ‘00110000’
#filter过滤值3bits
if FilterValue == ‘0’:
Filter_bits = ‘000’
elif FilterValue == ‘1’:
Filter_bits = ‘001’
elif FilterValue == ‘2’:
Filter_bits = ‘010’
elif FilterValue == ‘3’:
Filter_bits = ‘011’
elif FilterValue == ‘4’:
Filter_bits = ‘100’
elif FilterValue == ‘5’:
Filter_bits = ‘101’
elif FilterValue == ‘6’:
Filter_bits = ‘110’
elif FilterValue == ‘7’:
Filter_bits = ‘111’
else:
print(‘error’)
# 根据GS1公司前缀长度进而判断
if CompanyPrefixLength == 6:
Cutoff_Point = 7
GS1_Company_Prefix_bitslen = 20
ID_IRN_bitslen = 24
Partition_bits = ‘110’ # 6
elif CompanyPrefixLength == 7:
Cutoff_Point = 8
GS1_Company_Prefix_bitslen = 24
ID_IRN_bitslen = 20
Partition_bits = ‘101’ # 5
elif CompanyPrefixLength == 8:
Cutoff_Point = 9
GS1_Company_Prefix_bitslen = 27
ID_IRN_bitslen = 17
Partition_bits = ‘100’ # 4
elif CompanyPrefixLength == 9:
Cutoff_Point = 10
GS1_Company_Prefix_bitslen = 30
ID_IRN_bitslen = 14
Partition_bits = ‘011’ # 3
elif CompanyPrefixLength == 10:
Cutoff_Point = 11
GS1_Company_Prefix_bitslen = 34
ID_IRN_bitslen = 10
Partition_bits = ‘010’ # 2
elif CompanyPrefixLength == 11:
Cutoff_Point = 12
GS1_Company_Prefix_bitslen = 37
ID_IRN_bitslen = 7
Partition_bits = ‘001’ # 1
elif CompanyPrefixLength == 12:
Cutoff_Point = 13
GS1_Company_Prefix_bitslen = 40
ID_IRN_bitslen = 4
Partition_bits = ‘000’ # 0
GTIN_BITS_PRO = Header_bits + Filter_bits + Partition_bits
GS1_Company_Prefix = UPC[1:Cutoff_Point]
ID_IRN = UPC[0] + UPC[Cutoff_Point:13]
# GS1\_Company\_Prefix化为二进制,如果不够规定位数,前面加'0'
GS1_Company_Prefix_bits = add_zero(dec2bin(GS1_Company_Prefix), GS1_Company_Prefix_bitslen) # 24bits
# ID\_IRN 化为二进制,如果不够规定位数,前面加'0'
ID_IRN_bits = add_zero(dec2bin(ID_IRN), ID_IRN_bitslen)
GTIN_BITS = GTIN_BITS_PRO + GS1_Company_Prefix_bits + ID_IRN_bits
for i in range(AllNumber):
ID += 1
ExcelIndex += 1
SerialNumber += 1
wa.cell(ExcelIndex, 1, str(ID))
wa.cell(ExcelIndex, 2, str(SerialNumber))
wa.cell(ExcelIndex, 3, str(UPC))
wa.cell(ExcelIndex, 4, bin2hex(GTIN_BITS + add_zero(dec2bin(SerialNumber), 38)))
output = BytesIO()
wb.save(output)
output.seek(0)
response = HttpResponse(output.getvalue(), content_type='application/vnd.ms-excel')
# ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# file\_name = 'export.xls' % ctime # 给文件名中添加日期时间
# file\_name = urlquote(file\_name) # 使用urlquote()方法解决中文无法使用的问题
response['Content-Disposition'] = 'attachment; filename=bug\_info.xls'
# response.write(output.getvalue()) # 在设置HttpResponse的类型时,如果给了值,可以不写这句
return response
前端请求代码与返回结果:
if(CheckData() == true){
KaTeX parse error: Expected '}', got 'EOF' at end of input: …nyPrefixLength:(“.CompanyPrefixLength”).val(),
FilterValue:
(
"
.
F
i
l
t
e
r
V
a
l
u
e
"
)
.
v
a
l
(
)
,
U
P
C
:
(".FilterValue").val(), UPC:
(".FilterValue").val(),UPC:(“.UPC”).val(),
SerialNumber:
(
"
.
S
e
r
i
a
l
N
u
m
b
e
r
"
)
.
v
a
l
(
)
,
A
l
l
N
u
m
b
e
r
:
(".SerialNumber").val(), AllNumber:
(".SerialNumber").val(),AllNumber:(“.AllNumber”).val()
},
type:‘POST’,
dataType:‘json’,
complete:function (data) {
console.log(“complete”);
其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
《前端开发四大模块核心知识笔记》
最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。