PDA

Դիտել ողջ տարբերակը : Ծրագրավորում բիտերում



s_hrayr
17.04.2010, 11:00
Բարև Ձեզ: Խնդրում եմ օգնեք, ինչպես օգտագործեմ ֆայլերի բայտերը, որ կարողանամ փոփոխեմ նրանց մեջի բիտերը??????

Հրատացի
17.04.2010, 22:08
Իսկ ո՞ր լեզվով ես պատրաստվում անես դա

s_hrayr
17.04.2010, 22:15
C++

_DEATH_
17.04.2010, 22:32
Բարև Ձեզ: Խնդրում եմ օգնեք, ինչպես օգտագործեմ ֆայլերի բայտերը, որ կարողանամ փոփոխեմ նրանց մեջի բիտերը??????

Նախ բուլյան հանրահաշիվ սովորի, հետո նոր ծրագրավորում, հետո http://ru.wikipedia.org/wiki/Битовые_операции

s_hrayr
17.04.2010, 22:38
Նախ բուլյան հանրահաշիվ սովորի, հետո նոր ծրագրավորում, հետո http://ru.wikipedia.org/wiki/Битовые_операции

դրանք գիտեմ կարևորը կարենամ ֆայլերի բիտերը առանձնացնեմ որ կարենամ հետները աշխատեմ

_DEATH_
17.04.2010, 22:41
դրանք գիտեմ կարևորը կարենամ ֆայլերի բիտերը առանձնացնեմ որ կարենամ հետները աշխատեմ

Եթե գիտես, էլ ինչ պրոբլեմ կա? :think
Ուզում ես մեկը ծրագիրը քո տեղը գրի?

Եթե հա, գոնե գրի կոնկրետ ծրագիրդ բիթերի հետ ինչ պտի անի, մեկ էլ պարապ մնացած բարի ծրագրավորող ճարի որ քո տեղը գրի:

s_hrayr
17.04.2010, 23:14
Եթե գիտես, էլ ինչ պրոբլեմ կա? :think
Ուզում ես մեկը ծրագիրը քո տեղը գրի?

Եթե հա, գոնե գրի կոնկրետ ծրագիրդ բիթերի հետ ինչ պտի անի, մեկ էլ պարապ մնացած բարի ծրագրավորող ճարի որ քո տեղը գրի:
չեմ ասում է մ տեղը գրեն ես կարամ ուղղակի չգիտեմ նենց ֆունկցիա որի միջոցով կարենամ բիտերի հետ աշխատեմ: Թագնագրություն եմ գրում

_DEATH_
18.04.2010, 08:49
չեմ ասում է մ տեղը գրեն ես կարամ ուղղակի չգիտեմ նենց ֆունկցիա որի միջոցով կարենամ բիտերի հետ աշխատեմ: Թագնագրություն եմ գրում

Բիթերի հետ աշխատելու համար ոչ մի ֆունկցիա էլ պետք չի, այ որ իմանաիր բուլյան հանրահաշիվ, բիթային գործողություններով ինչ ուզեիր կանեիր բիթերի հետ:

Լավ հենց նոր մի փոքր օրինակ գրեցի:
Ասենք առաջի բայթը ֆայլից կարդում ես а փոփոխականի մեջ ես պահում, ես a-ին մի անգամից արժեք եմ տվել 254 (11111110):


#include <iostream>
using namespace std;

void main()
{
char a = 254;
for(int i = 7; i >= 0; i--)
cout << (a >> i & 1);
cout <<endl;
}



Սենց էկրանին կտպի а-ի պարունակությունը բիթերով:

Բիթերը փոխելու համար


#include <iostream>
using namespace std;

void printBin(char &b)
{
for(int i = 7; i >= 0; i--)
cout << (b >> i & 1);
cout <<endl;
}



void main()
{
char a = 6;
printBin(a);

a |= 1;
printBin(a);

a &= 253;
printBin(a);
}

Պարունակությունը տպելը ֆունկցիա սարքեցի, հետո տպեցի а-ի պարունակությունը, կրտսեր բիթը սարքեցի 1, հետո տպեցի, 2րդ բիթը սարքեցի 0 տպեցի

00000110
00000111
00000101
Press any key to continue . . .

Տենց ցանկցած բիթի պարունակություն կարամ փոփոխեմ, ուրիշ բան պետք չի, մենակ բուլյան հանրահաշիվ + ծրագրավորում, եթե ասում ես դրանք գիտես, բա ինչի սենց հասարակ բան չես կարում գրես?

MSGM
18.04.2010, 09:40
Եթե ուզում ես ինչ-որ a բայթի i-րդ բիտը փոխել.
1) դարձնել 1


a |= (1<<i);

2) դարձնել 0


a &= ~(1<<i);

3) switch անել


a ^= (1<<i);


Էսքանը պիտի որ հերիքի:

_DEATH_
18.04.2010, 09:49
Եթե ուզում ես ինչ-որ a բայթի i-րդ բիտը փոխել.
1) դարձնել 1


a |= (1<<i);

2) դարձնել 0


a &= ~(1<<i);

3) switch անել


a ^= (1<<i);


Էսքանը պիտի որ հերիքի:

Ավելի պարզ ա, բայց օրինակ 0 դարձնելու դեպքում թեկուզ բիթային, բայց 2 գործողություն ավելանում ա, մեծ ինֆորմացիայի հետ գործ ունենալու դեպքում ահագին կդանդաղի, հիմնականում կոնկրետ բիթ ա պետք լինում փոխել, դրա համար ավելի լավ ա մասկան մի անգամից գրել, ոչ թե գեներացնել:

s_hrayr
18.04.2010, 14:58
Բիթերի հետ աշխատելու համար ոչ մի ֆունկցիա էլ պետք չի, այ որ իմանաիր բուլյան հանրահաշիվ, բիթային գործողություններով ինչ ուզեիր կանեիր բիթերի հետ:

Լավ հենց նոր մի փոքր օրինակ գրեցի:
Ասենք առաջի բայթը ֆայլից կարդում ես а փոփոխականի մեջ ես պահում, ես a-ին մի անգամից արժեք եմ տվել 254 (11111110):


#include <iostream>
using namespace std;

void main()
{
char a = 254;
for(int i = 7; i >= 0; i--)
cout << (a >> i & 1);
cout <<endl;
}



Սենց էկրանին կտպի а-ի պարունակությունը բիթերով:

Բիթերը փոխելու համար


#include <iostream>
using namespace std;

void printBin(char &b)
{
for(int i = 7; i >= 0; i--)
cout << (b >> i & 1);
cout <<endl;
}



void main()
{
char a = 6;
printBin(a);

a |= 1;
printBin(a);

a &= 253;
printBin(a);
}

Պարունակությունը տպելը ֆունկցիա սարքեցի, հետո տպեցի а-ի պարունակությունը, կրտսեր բիթը սարքեցի 1, հետո տպեցի, 2րդ բիթը սարքեցի 0 տպեցի

00000110
00000111
00000101
Press any key to continue . . .

Տենց ցանկցած բիթի պարունակություն կարամ փոփոխեմ, ուրիշ բան պետք չի, մենակ բուլյան հանրահաշիվ + ծրագրավորում, եթե ասում ես դրանք գիտես, բա ինչի սենց հասարակ բան չես կարում գրես?

ետ քո ասած հասարակ բաները հլը 3 տարի առաջ էի գրում, կարողա հարցս լավ չեմ ձևակերպել դրա համար ուրիշ պատասխաններ են հնչում, կոնկրետ օրինակի վրա ասեմ, պիտի ասենք նկարը առանձնացնեմ բայտերի ու իրանց հետ գործողություններ անեմ, ետ գործողություններ անելը գիտեմ այ բայց թե ոնց եմ նկարի ամեն բայթին դիմելու այ ետ մեկը չգիտեմ:

MSGM
18.04.2010, 15:54
Եթե ի նկատի ունես կոկրետ նկարները, կախված ա նկարի տեսակից (եթե ֆայլից ես կարդում), բայց վերջում պիտի ստանաս միաչափ կամ երկչափ զանգված, որը սովորաբար պարունակում ա 4-բայթանոց պիքսելներ, որոնց արժեքները կարող ես փոխել քո իմացած ձևերով: Իսկ եթե կոնկրետ նկարներ ի նկատի չունես, ուրեմն ես չեմ հասկանում` ինչ ես ուզում: Մի հատ լավ բացատրի կոնկրետ որ մասը չի ստացվում:

_DEATH_
18.04.2010, 18:09
ետ քո ասած հասարակ բաները հլը 3 տարի առաջ էի գրում, կարողա հարցս լավ չեմ ձևակերպել դրա համար ուրիշ պատասխաններ են հնչում, կոնկրետ օրինակի վրա ասեմ, պիտի ասենք նկարը առանձնացնեմ բայտերի ու իրանց հետ գործողություններ անեմ, ետ գործողություններ անելը գիտեմ այ բայց թե ոնց եմ նկարի ամեն բայթին դիմելու այ ետ մեկը չգիտեմ:

Սկիզբը հարցնում ես ոնց բիթերը փոփոխեմ, պատասխանում ենք, ասում "ետ քո ասած հասարակ բաները հլը 3 տարի առաջ էի գրում", հետո լրիվ ուրիշ հարց ես տալի, կրուտիտն էլ յանի հարցդ ձևակերպել չես կարում: Հիմա էլ վաբշե անկապ հարց ես տվել, նկարի բայթը որն ա?
Գոյություն ունեն հարուրավոր նկարի տեսակներ, լրիվ տարբեր կառուցվածքներով, օրինակ մեկը (bmp), 24 բիթանոցի դեպքում ուղակի հեդեռից բացի ամեն պիքսելի համար 3 բայթ ա տրամադրում: Մեկը մաս-մաս LZW-ով ճզմում ա (Էտ gif-ն ա), ...

Իհարկե կներես որ քո նման մասնագետին դրա մասին ասում եմ, դու երևի տենց հասարակ բաները 6 տարի առաջ ես իմացել, ֆայլ բացել, ֆայլից կարդալն էլ երևի 9 տարի առաջ ես իմացել: Հիմա էլ էնքան հասարակ բան ա, որ ալարում ես գրես:

aerosmith
18.04.2010, 21:48
Բարև Ձեզ: Խնդրում եմ օգնեք, ինչպես օգտագործեմ ֆայլերի բայտերը, որ կարողանամ փոփոխեմ նրանց մեջի բիտերը??????

հավանաբար դու նկատի ունես հետրյալը
ուզում ես նախ և առաջ բացես ֆայլի պարունակությունը, այնուհետև ամեն մի սիմվոլը վերածես յունիքոդի կոդի, հետո ամեն մի յունիքոդի կոդը վերածես երկուականի ու այդ երկուականի հետ անես են ինչ ուզում ես։ Հավանաբար գաղտնագրման, կամ թաքնագրման խնդիր ես լուծելու( :) ) Ուղղակի պետքա մի փոքր գուգլ քրքրես համապատասխան ֆունկցիաները գտնելու համար։
ես էդ կարող եմ ասեմ, բայց միայն շարփով , եթե ուզենաս ասա քեզ ուղարկեմ կոդը։

s_hrayr
18.04.2010, 22:42
հավանաբար դու նկատի ունես հետրյալը
ուզում ես նախ և առաջ բացես ֆայլի պարունակությունը, այնուհետև ամեն մի սիմվոլը վերածես յունիքոդի կոդի, հետո ամեն մի յունիքոդի կոդը վերածես երկուականի ու այդ երկուականի հետ անես են ինչ ուզում ես։ Հավանաբար գաղտնագրման, կամ թաքնագրման խնդիր ես լուծելու( :) ) Ուղղակի պետքա մի փոքր գուգլ քրքրես համապատասխան ֆունկցիաները գտնելու համար։
ես էդ կարող եմ ասեմ, բայց միայն շարփով , եթե ուզենաս ասա քեզ ուղարկեմ կոդը։

Բաբ ջան ինստիտուտում որ հարցնում եմ բանից տեղյակ չես, ետ ոնցա ստեղ լավ խորհուրդներ ես տալիս???:D

s_hrayr
18.04.2010, 22:47
Սկիզբը հարցնում ես ոնց բիթերը փոփոխեմ, պատասխանում ենք, ասում "ետ քո ասած հասարակ բաները հլը 3 տարի առաջ էի գրում", հետո լրիվ ուրիշ հարց ես տալի, կրուտիտն էլ յանի հարցդ ձևակերպել չես կարում: Հիմա էլ վաբշե անկապ հարց ես տվել, նկարի բայթը որն ա?
Գոյություն ունեն հարուրավոր նկարի տեսակներ, լրիվ տարբեր կառուցվածքներով, օրինակ մեկը (bmp), 24 բիթանոցի դեպքում ուղակի հեդեռից բացի ամեն պիքսելի համար 3 բայթ ա տրամադրում: Մեկը մաս-մաս LZW-ով ճզմում ա (Էտ gif-ն ա), ...

Իհարկե կներես որ քո նման մասնագետին դրա մասին ասում եմ, դու երևի տենց հասարակ բաները 6 տարի առաջ ես իմացել, ֆայլ բացել, ֆայլից կարդալն էլ երևի 9 տարի առաջ ես իմացել: Հիմա էլ էնքան հասարակ բան ա, որ ալարում ես գրես:

Բան ու գործ չունեմ պիտի ստեղ կռուտիտներ անեմ??? Թեման ասեմ դու հասկացի բայց նախորդ գրածիս մեջ բացատրել եմ, նկարի մեջ պիտի տեքստ թաքնագրեմ, եթե իհարկե գիտես թե ինչա թաքնագրությունը: Ու ետ ամեն ինչը անելու համար պիտի նկարի պիկսելները բայթ առ բայթ կարդամ ու իմ տեքստը մեջը գրեմ: Հիմա պարզ եղավ?

_DEATH_
18.04.2010, 23:13
Բան ու գործ չունեմ պիտի ստեղ կռուտիտներ անեմ??? Թեման ասեմ դու հասկացի բայց նախորդ գրածիս մեջ բացատրել եմ, նկարի մեջ պիտի տեքստ թաքնագրեմ, եթե իհարկե գիտես թե ինչա թաքնագրությունը: Ու ետ ամեն ինչը անելու համար պիտի նկարի պիկսելները բայթ առ բայթ կարդամ ու իմ տեքստը մեջը գրեմ: Հիմա պարզ եղավ?

Եթե խոսքը ստեգանոգրաֆիայի (Steganography) մասին ա, ուրեմն մի անգամից թեմայի վերնագիրը տենց դնեիր, հետո էլ նորմալ ձևակերպի հարցդ, երկու հատ հարց ես տվել, մեկը մյուսից անիմաստ:
Հիմա ավելի կոնկրետ ասա ինչ ա քեզ պետք
1) նկարը որպես ֆայլ չես կարում բացես, ֆայլերի հետ գործ ունենալ չգիտես
2) բիթերը փոփոխելն էր եթե ուզածդ արդեն մանրամասն ասեցինք, դու էլ ասեցիր որ արդեն 3 տարի ա գիտես, չնայած առաջի հարցով հենց էտ էիր հարցնում
3) չգիտես թվային նկարը ընդհանրապես իրանից ինչ ա ներկայացնում ֆայլից բացի
4) չգիտես որ տարբեր տեսակի նկարներ կան ու ամեն մեկը ունի կոնկրետ կառուցվածք
5) քո ասած թաքնագրությունը (ստեգանոգրաֆիան) չգիտես ինչ բան ա, ոնց են անում, ուզում ես որ ուրիշ մեկը ամեն ինչ գրի, դու կոպի անես, ասես ես եմ գրել, հզոր ծրագրավորող եմ :B
...

s_hrayr
18.04.2010, 23:51
Եթե խոսքը ստեգանոգրաֆիայի (Steganography) մասին ա, ուրեմն մի անգամից թեմայի վերնագիրը տենց դնեիր, հետո էլ նորմալ ձևակերպի հարցդ, երկու հատ հարց ես տվել, մեկը մյուսից անիմաստ:
Հիմա ավելի կոնկրետ ասա ինչ ա քեզ պետք
1) նկարը որպես ֆայլ չես կարում բացես, ֆայլերի հետ գործ ունենալ չգիտես
2) բիթերը փոփոխելն էր եթե ուզածդ արդեն մանրամասն ասեցինք, դու էլ ասեցիր որ արդեն 3 տարի ա գիտես, չնայած առաջի հարցով հենց էտ էիր հարցնում
3) չգիտես թվային նկարը ընդհանրապես իրանից ինչ ա ներկայացնում ֆայլից բացի
4) չգիտես որ տարբեր տեսակի նկարներ կան ու ամեն մեկը ունի կոնկրետ կառուցվածք
5) քո ասած թաքնագրությունը (ստեգանոգրաֆիան) չգիտես ինչ բան ա, ոնց են անում, ուզում ես որ ուրիշ մեկը ամեն ինչ գրի, դու կոպի անես, ասես ես եմ գրել, հզոր ծրագրավորող եմ :B
...

Թարսի պես էս սաղ գրածներիցդ գաղափար ունեմ: Նամանավանդ են 2-5-ի մասին ենքան եմ կարդացել որ հոգնել եմ: Երևի 1-նա բռնում են էլ մի քիչ փոխած, ամենայն հավանականությամբ bmp-ում եմ անելու, ոնց C++-ում նկարի ֆայլը բացեմ բայտ առ բայտ???

_DEATH_
19.04.2010, 00:37
Թարսի պես էս սաղ գրածներիցդ գաղափար ունեմ: Նամանավանդ են 2-5-ի մասին ենքան եմ կարդացել որ հոգնել եմ: Երևի 1-նա բռնում են էլ մի քիչ փոխած, ամենայն հավանականությամբ bmp-ում եմ անելու, ոնց C++-ում նկարի ֆայլը բացեմ բայտ առ բայտ???

Ինչի թարսի պես, ընդհակառակը շատ լավ ա որ գաղափար ունես:
Ուրեմն ցանկացած ծրագրավորումից տեղյակ մարդ գիտի, որ կապ չունի նկարի ֆայլ ա, թե երգի, թե արաղի, մեկա բացվում ա ինչպես մնացած բոլոր ֆայլերը (եթե ուրիշ հատուկ գրադարան/մոդուլ չօգտագործվի):

Հիմա սկսեմ C++ի դասընթացը



#include <iostream>
#include <fstream>
using namespace std;

void printBin(char &b)
{
for(int i = 7; i >= 0; i--)
cout << (b >> i & 1);
cout <<endl;
}



void main()
{
char a;
fstream f("file.txt"), f2("Steg.boc"); //բացում ա ֆայլը
f >> a; // կարդում ա առաջին բայթը

printBin(a); // տպում ա առաջին բայթը բիթերով

a |= 1; // փոխում ա առաջին բայթի կրտսեր բիթը, սարքում 1
printBin(a); // տպում

f2 << a; // գրում ա փոխած բայթը Steg.boc ֆայլի վրա

f >> a; // կարդում ա երկրորդ բայթը

a &= 253;
printBin(a);
}


Չնայած դու երևի էս էլ անգիր գիտես, իզուր եմ գրում: Քո միակ պռոբլեմն էլ երևի էն ա, որ դու ամենինչ գիտես:

s_hrayr
19.04.2010, 00:48
Այ ապրես: Հենց էտ ել պետք էր: Բայց են ծաղրանքա տե հեգնանքա հեչ տեղին չեր: Չլի պոլիտեխ ես ավարտել?

_DEATH_
19.04.2010, 00:56
Այ ապրես: Հենց էտ ել պետք էր: Բայց են ծաղրանքա տե հեգնանքա հեչ տեղին չեր: Չլի պոլիտեխ ես ավարտել?

Ապեր եթե հարցդ նորմալ ձևակերպեիր, մի անգամից նորմալ պատասխան կստանաիր, սկիզբը հարցը նենց էիր տվել, որ ոչ մեկի մտքով չէր անցնի որ քեզ ֆայլ բացել, ֆայլից կարդալ, ֆայլի վրա գրել ա պետք: Ով ուզում ա լինի, կհասկանար որ դու բիթերի հետ աշխատել չգիտես, ծրագրավորումից լրիվ հեռու ես, ... Որովհետև էտի ծրագրավորման ամենատարական բաներից մեկն ա, գոնե լեզուն նշեիր, էտ էլ որ չեիր գրել վաբշե ոնցոր ամենինչից անտեղյակ մեկի հարց լինի հասկանում ես: Բիթերի հետ աշխատելը շատ բարդ ալգորիթմներ գրելու համար ա մենակ պետք լինում: Պոլիտեխ էլ սովորում եմ հիմա:

_DEATH_
19.04.2010, 01:03
fstream f("file.txt"), f2("Steg.boc", ios:: out); //բացում ա ֆայլը

Էս տողում էլ նոր տեսա, արագ գրելուց մոռացել էի գրեի ios:: out

s_hrayr
19.04.2010, 01:27
Ես ընդհանրապես ֆորումներից եմ հեռու դրա համար չեմ կարում հարցեր ձևակերպեմ, դե եթե ետ կարծիքին ես կարաս դասախոսներիցս ճշտես ինչից եմ տեղյակ ինչից անտեղյակ հաստատ իրանց պատասխանները դուրտ չի գա :) կարողա միամիտ անունտ էլ Կարենա ու մագիստրատուրա ես սովորում: աչքիս ես տեման պակեն մոդերատորները:

aerosmith
19.04.2010, 07:07
Բաբ ջան ինստիտուտում որ հարցնում եմ բանից տեղյակ չես, ետ ոնցա ստեղ լավ խորհուրդներ ես տալիս???:D

ապեր ինչքան հիշում եմ դու ինձ տենց հարց չես տվել... կամ էլ տվել ես չեմ ջոկել ինչի հետ ես ։։։ էլի եմ ասում եթե ուզես կոդերը տամ, բայց շարփով ա գրած, սի փլաս փլասով չեմ կարա ասեմ։