1. 程式人生 > >快手的一個面試題

快手的一個面試題

題目:資料包有512個位元組,處理:每個包會加4個校驗字元;offset為開始的位置,length表示取出資料的長度,現在給你一個處理完的檔案,請你取出從offset位置開始長為length的原始資料(即沒有校驗字串);

哪些坑呢:

1.offset可能是從某個資料包的中間開始的,同樣offset+length定位的位置可能是某個資料包的中間;(一腳踩坑裡了)

2.offset好像不是處理過後的檔案開始位置,而是原始資料包(無校驗)中的位置,包括length也是;(我忘了,我就當成是處理後的檔案實現了下)

def check(target,offset,length):
   end = offset + length - 1
   temp = (offset/5+1)*5 - 1
   if temp >= end:
       return target[offset:end+1]
   if temp < end:
       tmp = target[offset:temp+1]
       while temp + 4 < end:
           tmp += target[temp+5:temp + 10]
           temp = temp + 9
       if offset > end:
           temp -= 9
           tmp += target[temp:end+1]
       return tmp
x = [2,2,2,2,2,1,1,1,1,3,3,3,3,3,1,1,1,1,4,4,4,4,4,1,1,1,1]
offset = 2
length = 8
print check(x,offset,length)

然後我就涼了;