Ukukhuphela i-16GB torrent ngethebhulethi ene-4GB yendawo yasimahla

Ukukhuphela i-16GB torrent ngethebhulethi ene-4GB yendawo yasimahla

Umsebenzi:

Kukho iPC ngaphandle kwe-Intanethi, kodwa kunokwenzeka ukudlulisa ifayile nge-USB. Kukho ithebhulethi ene-Intanethi apho le fayile inokudluliselwa khona. Unokukhuphela umlambo ofunekayo kwithebhulethi yakho, kodwa akukho ndawo yaneleyo yasimahla. Ifayile kumlambo enye kwaye inkulu.

Indlela eya kwisisombululo:

Ndaqalisa umlambo ukukhuphela. Xa indawo ekhululekileyo yayisele iphelile, ndanqumama ukukhuphela. Ndiqhagamshele ithebhulethi kwiPC kwaye ndahambisa ifayile kwithebhulethi ukuya kwiPC. Ndiye ndathula ndothuka yaphinda yenziwa ifayile yabe i torrent yaqhubeka ikhuphela ngathi akwenzekanga nto.

Ngenxa yokuba umxhasi we-torrent ubeka iflegi encinci kwifayile ebhala kuyo idatha efunyenweyo, inkqubo ayizami ukugcina i-16GB kanye kwaye impazamo ayiyi kwenzeka xa uzama ukubhala kwifayile engaphaya kwe-4GB.

Emva kokuphinda inkqubo kane, ndifumene iifayile ezine kwiPC yam equlethe iindawo ezahlukeneyo zomlambo ofanayo. Ngoku okuseleyo kukuhlanganisa. Inkqubo ilula kakhulu. Kufuneka ubuyisele ii-bytes zero ngelinye ixabiso ukuba likhona kwindawo enikiweyo kwenye yeefayile ezine.

Kwakubonakala kum ukuba inkqubo elula ngolo hlobo ifanele ibe kwi-Intanethi. Ngaba akukho mntu wakha wadibana nengxaki enjalo? Kodwa ndiye ndaqonda ukuba andazi nokuba ngawaphi amagama angundoqo okukhangela kuwo. Ke ngoko, ndidale ngokukhawuleza iskripthi seLua kulo msebenzi kwaye ngoku ndiwulungisile. Yile nto endifuna ukwabelana ngayo.

Ukukhuphela umlambo kwiindawo

  1. qala ukukhuphela umlambo kwisixhobo sokuqala
  2. linda de i-ROM izaliswe
  3. nqumamisa ukhuphelo
  4. dlulisela ifayile kwisixhobo sesibini kwaye wongeze inani kwigama lefayile
  5. sibuyela kwindawo yokuqala de ifayile ikhutshwe ngokupheleleyo

Ukudibanisa iindawo kwifayile enye

Emva kokuba inxalenye yokugqibela ifunyenwe, kuyimfuneko ukuyiqokelela kwifayile enye.

Umsebenzi ulula:

  1. Ukufunda onke amalungu ngaxeshanye
  2. Ukuba kwindawo ethile indawo ayikho i-byte ye-zero, ngoko siyibhala kwimveliso, ngaphandle koko sibhala i-zero

Umsebenzi merge_part yamkela uluhlu lwemisonto streams_in efunda inxalenye yobungakanani buffer_length kwaye ibuyisela isiphumo samalungu okudibanisa ukusuka kwimisonto eyahlukeneyo.

function merge_part(streams_in, buffer_length)
    local out_part
    for _, stream in ipairs(streams_in) do
        local in_part = stream:read(buffer_length)

        if not out_part then
            out_part = in_part -- просто копируем часть из первого файла
        elseif in_part and #in_part > 0 then

            if #out_part < #in_part then
                out_part, in_part = in_part, out_part
            end

            if out_part ~= in_part  -- данные различаются
                and in_part:find("[^ ]")   -- есть данные в in_part
                and out_part:find(" ", 1, true) -- есть пустые места в out_part
            then 
                local find_index = 1
--[[

Umsebenzi string.gsub ilungele umsebenzi kuba iya kufumana iziqwenga ezizaliswe ngooziro kwaye ihambise oko ikunikiweyo.

--]]
                out_part = out_part:gsub(" +", function(zero_string)

                    if #in_part < find_index then
                        return -- не на что менять
                    end
--[[

string.gsub ayibonisi indawo apho umdlalo ufunyenwe khona. Ngoko ke, senza uphando oluhambelanayo lwendawo zero_string usebenzisa umsebenzi string.find. Kwanele ukufumana i-byte yokuqala ye-zero.

--]]
                    local start_index = out_part:find(" ", find_index, true)
                    find_index = start_index + #zero_string

--[[

Ngoku ukuba ku in_part kukho idatha ye out_part zikope.

--]]
                    if #in_part >= start_index then
                        local end_index = start_index + #zero_string - 1
--[[

Sika ukusuka in_part inxalenye ehambelana nolandelelwano lweqanda.

--]]
                        local part = in_part:sub(start_index, end_index)

                        if (part:byte(1) ~= 0) or part:find("[^ ]") then
--[[

В part kukho idatha.

--]]
                            if #part == #zero_string then
                                return part
                            else
--[[

part yajika yaba ngaphantsi kolandelelwano lweqanda. Masiyongeze kunye nabo.

--]]
                                return part..zero_string:sub(1, end_index - #in_part)
                            end
                        end
                    end
                end)
            end
        end
    end
    return out_part
end

isiphelo

Ke, sakwazi ukukhuphela kwaye sihlanganise le fayile kwiPC. Emva kokudibanisa, ndakhupha ifayile yomlambo kwithebhulethi. Ndifake umxhasi wetorrent kwiPC yam kwaye ndajonga ifayile ngayo.

Inxalenye yokugqibela ekhutshelweyo kwithebhulethi inokushiywa kunikezelo, kodwa kufuneka uvumele ukujonga kwakhona iinxalenye ngaphambi koku kwaye ungayikhangeli ifayile ukuze ingakhupheli kwakhona.

NONE

  1. Umxhasi we-Flud torrent kwithebhulethi.
  2. Umxhasi weTorrent qBittorent kwiPC.
  3. Lua iskripthi

umthombo: www.habr.com

Yongeza izimvo