Wednesday 29 November 2017

C print char as binäralternativ


Den här frågan har redan ett svar här: Jag vill ha ett riktigt grundläggande sätt att skriva ut den binära representationen av en karaktär. Jag kan inte tyckas hitta någon exemplar kod någonstans. Jag antog att du kunde göra det på några rader men allt jag tycker är alltför lång och komplicerat med många funktioner som jag inte har använt tidigare. Atoi kommer upp mycket men det är inte standard. Finns det en enkel funktion eller ett enkelt sätt att skriva en funktion för att ta en karaktärsvariabel och sedan skriva ut en binär representation Exempel: char x är det argument som tas in av funktionen och x är 0111 1000 skrivs ut. Dess för en skoluppgift där jag måste ta in användarinmatning av en sträng och skriva ut strängen i binär. Jag behöver bara få grunderna att konvertera en kar till binär men jag kämpar just nu. frågade aug 20 13 vid 5:17 alex 278k 9679 134 9679 677 9679 827 markerad som dubbletter av Mitch Wheat. Ted Hopp. devnull. WhozCraig. Graviton Aug 20 13 på 6:28 Den här frågan har blivit utfrågad tidigare och har redan ett svar. Om svaren inte tar upp din fråga helt, fråga en ny fråga. Du borde lägga in ditt försök. ndash Mitch Wheat Aug 20 13 på 5:18 Vad du vill göra är att använda bitwise operatörer för att maskera bitarna en efter en och skriva ut dem till standardutmatningen. En kul i C är garanterad att vara 1 byte, så slinga till 8. Inom varje iteration maskerar du av den högsta ordningsbiten. När du har det, skriv det ut till standardutmatningen. Här är en snabb kniv som förhoppningsvis är meningsfull. För att få biten, skifter jag till vänster för att få numrerad bit (högst till lägst så att det är enkelt att skriva ut) och sedan maska ​​av det. Jag översätter sedan det till 0 eller 1 with. Print formaterad data till stdout. Skriver C-strängen spetsad enligt formatet till standardutgången (stdout). Om formatet innehåller formatspecifikatorer (delsekvenser som börjar med), formateras de ytterligare argumenten som följer formatet och infogas i den resulterande strängen som ersätter deras respektive specifikationer. Parametrar formaterar C-sträng som innehåller texten som ska skrivas till stdout. Det kan eventuellt innehålla inbäddade formatspecifikatorer som ersätts av de värden som anges i efterföljande ytterligare argument och formateras som begärts. Där den specifierande karaktären i slutet är den viktigaste komponenten, eftersom den definierar typen och tolkningen av dess motsvarande argument: Signerat decimaltalstal Unsigned decimal integer Ej signerad hexadecimalt heltal Ej signerad hexadecimalt heltal (storlek) Decimal flytpunkt, små bokstav Decimal flytpunkt, stor bokstav Scientific notation (mantissaexponent), små bokstäver Scientific notation (mantissaexponent), stor bokstav Använd kortaste representationen: e eller f Använd kortaste representationen: E eller F Hexadecimal flytpunkt, små bokstäver Hexadecimal flytpunkt, stor bokstav String av tecken Inget tryckt. Motsvarande argument måste vara en pekare till en signerad int. Antalet bokstäver hittills lagras i den spetsiga platsen. En följd av ett annat tecken kommer att skriva en singel till strömmen. Formatspecifikationen kan också innehålla underspecifikatorer: flaggor. bredd ..Precision och modifierare (i den ordningen), som är frivilliga och följa dessa specifikationer: Vänsterjustera inom den angivna fältbredden. Höger motivering är standardvärdet (se breddsunderspecifikationen). Krafter för att föregripa resultatet med ett plus - eller minustecken (eller -) även för positiva tal. Som standard förekommer endast negativa tal med a-tecken. Om inget tecken kommer att skrivas läggs ett tomt utrymme in före värdet. Används med o. x eller X specificerar värdet förbi med 0. 0x respektive 0X för olika värden än noll. Används med a. A. e. E. f. F. g eller G det tvingar den skriftliga utgången att innehålla en decimal, även om inga fler siffror följer. Som standard, om ingen siffror följer, skrivs ingen decimalpunkt. Vänster-pads numret med nollor (0) istället för mellanslag när padding är specificerad (se breddsunderspecifikare). För integerspecifiers (d. I. O. U. X. X): precision anger det minsta antalet siffror som ska skrivas. Om värdet som ska skrivas är kortare än detta nummer, är resultatet polstret med ledande nollor. Värdet avkortas inte, även om resultatet är längre. En precision av 0 betyder att inget tecken är skrivet för värdet 0. För en . A. e. E. f och F specifiers: detta är antalet siffror som ska skrivas ut efter decimalpunkten (som standard är detta 6). För g - och G-specificatorer: Detta är det maximala antalet signifikanta siffror som ska skrivas ut. För s. Detta är det maximala antalet tecken som ska skrivas ut. Som standard skrivs alla tecken ut tills det slutliga nollteckenet uppträder. Om perioden anges utan ett uttryckligt värde för precision. 0 antas. Precisionen är inte specificerad i formatsträngen, men som ett extra heltalvärdesargument som föregår det argument som måste formateras. Längdsunderspecifikationen ändrar längden på datatypen. Detta är ett diagram som visar vilka typer som används för att tolka motsvarande argument med och utan längdspecifika (om en annan typ används, utförs korrekt typpromotion eller omvandling, om det är tillåtet): Obs beträffande c-specifier: det tar en int eller wintt) som argument, men utför den rätta omvandlingen till ett char-värde (eller en wchart) innan du formaterar den för utmatning. Obs! Gula rader anger specificatorer och underspecifikatorer som införs av C99. Se ltcinttypesgt för specifikatorerna för utökade typer. . (ytterligare argument) Beroende på formatsträngen kan funktionen förvänta sig en sekvens av ytterligare argument, var och en innehåller ett värde som ska användas för att ersätta ett formatspecifikare i formatsträngen (eller en pekare till en lagringsplats för n). Det ska finnas minst lika många av dessa argument som antalet värden som anges i formatspecifika-torerna. Ytterligare argument ignoreras av funktionen. Returvärde Efter framgång returneras det totala antalet tecknade tecken. Om ett skrivfel inträffar är felindikatorn (ferror) inställd och ett negativt tal returneras. Om ett multibyte teckenkodningsfel uppstår när du skriver stora tecken ställs errno på EILSEQ och ett negativt tal returneras. Kompatibilitet Särskilda biblioteksimplementeringar kan stödja ytterligare specifikationer och underspecifika. De som listas här stöds av de senaste C och C-standarderna (båda publicerade 2011), men de i gul introducerades i C99 (krävs endast för C-implementeringar sedan C11) och får inte stödjas av bibliotek som uppfyller äldre standarder. sätter Skriv sträng till stdout (funktion) scanf Läs formaterad data från stdin (funktion) fprintf Skriv formaterad data för att strömma (funktion) Skriv Skriv block av data för att strömma (funktion) funktioner: Makrokonstanter: Okej så jag vet att det är några diskussioner om Detta på forumet, men hjälp och lösningar är bortom mina förmågor. Jag är en början c-student och har fått uppgiften att konvertera en rad tecken till binär representation, då måste jag kunna konvertera en binär sträng till ascii-teckenvärdena. Jag fick den första delen bara bra men jag fastnar på att konvertera från binära till ascii-värden. Alla diskussioner om detta som Ive läser involverar pekare, arrays, andor användardefinierade funktioner och vi har inte lärt sig några av dessa alternativ ännu. Så, är det ett sätt att göra detta med kunskap om loopar, bibliotek och definierande variabler Ive tittade igenom två c-böcker, cplusplus-forumen och hela listan i referensavsnittet och jag räknar inte med hur jag gör en sådan uppgift. Jag tycker att jag får arrays från hjälp jag fick reda på den första delen men jag antar att jag inte får dem tillräckligt. Om jag kunde få några tips, ledtrådar eller några knuffar i rätt riktning om hur man gör det med min begränsade kunskap, är jag alltid tacksam. Tack på förhand och här är koden jag har hittills. Känn dig fri att kritisera mig om jag har gjort någonting på onödiga sätt. ) inkluderar ltiostreamgt include ltstringgt inkluderar ltbitsetgt include ltcmathgt include ltiomanipgt include ltbitsetgt include ltclimitsgt using namespace std cout ltlt endl ct ltlt ltlt endl cout ltlt Ange en rad tecken: getline (cin, charin) cout ltlt charin ltlt endl för (sizet i 0 i Det är karin. size () i) cout ltlt bitsetlt8gt (charini) cout ltlt endl lt ct ltlt Ange en sträng binär: getline (cin, binin) cout ltlt binin ltlt endl Kontrollera att inmatningen fungerade. Vad kommer att göra detta arbete. Jag vet att jag förmodligen behöver en för loop. Ive försökte allt från forumet och dess allt bortom min förmåga vid denna tidpunkt. När du slutar sluta, slutade du. Jag gick in i ett konstigt problem. Så jag hade gjort min kod i Xcode. Det fungerar felfritt. Men då kopierar jag och klistrar in det i vim på min skoleserver för att aktivera det och kompilatorn kommer inte att kompilera det. Felen är som följer: strings. cpp: I funktion int huvud (): strings. cpp: 45: fel: förväntat primära uttryck före token strings. cpp: 45: fel: förväntat primära uttryck före token strings. cpp: 45 : fel: förväntat primärt uttryck före char strings. cpp: 45: error: allof har inte deklarerats i denna räckvidd min linje 45 motsvarar din linje 14. Jag tog ut den förkolning och det här brillet vill ha ett primärt uttryck före char och allof är fortfarande inte angivet i räckvidden, så lägger jag in den igen. Jag läste upp på allof-funktionen och din linje 14 är 100 korrekt baserat på referensdelen här i cplusplus. Ingen av mina kamrater eller TA kan få reda på varför problemet är. Några tankar jag är helt förvirrad. allof () existerar från C11 på samt lambda-funktionen. Antingen är din kompilator för gammal eller du måste slå på flaggan för detta. Bummer, så min gissning är att min kompilator är för gammal. Finns det en liknande funktion som fungerar på samma sätt eller kommer jag att behöva gå om det på ett annat sätt? Beskrivning Skriver ut data till serieporten som en läsbar ASCII-text. Detta kommando kan ta många former. Numren skrivs ut med ett ASCII-tecken för varje siffra. Floats skrivs på samma sätt som ASCII-siffror, med två decimaler. Byte skickas som enstaka tecken. Tecken och strängar skickas som det är. Till exempel: Serial. print (78) ger 78 Serial. print (1.23456) ger 1.23 Serial. print (N) ger N Serial. print (Hello world.) Ger Hello world. En valfri andra parameter anger basen (format) för att använda tillåtna värden är BIN (binär eller bas 2), OCT (oktal eller bas 8), DEC (decimal eller bas 10), HEX (hexadecimal eller bas 16) . För flytande punkttal anger denna parameter hur många decimaler som ska användas. Till exempel: Serial. print (78, BIN) ger 1001110 Serial. print (78, OCT) ger 116 Serial. print (78, DEC) ger 78 Serial. print (78, HEX) ger 4E Serial. println (1.23456, 0 ) ger 1 Serial. println (1.23456, 2) ger 1.23 Serial. println (1.23456, 4) ger 1.2346 Du kan skicka flash-minnesbaserade strängar till Serial. print () genom att omsluta dem med F (). Till exempel. Serial. print (val) Serial. print (val, format) Parameterval: det värde som ska skrivas ut - vilket datatypformat som anges: anger talbasen (för integrerade datatyper) eller antal decimaler (för floating point-typer) sizet lång): print () returnerar antalet byte skrivna, men läser det numret är valfritt Använder en FOR-slinga för data och skriver ut ett nummer i olika format. int x 0 variabel tomgångsinställning 40 41 123 Serial. starta 40 9600 41 öppna seriell port vid 9600 bps: 125 tomrumslopp 40 41 123 utskriftsetiketter Serial. skriv ut 40 quotNO FORMATquot 41 skriver ut en etikett Serial. skriv ut 40 citat 41, skriver ut en flik Serial. skriv ut 40 quotDECquot 41 Serial. skriv ut 40 citat 41 Serial. skriv ut 40 quotHEXquot 41 Serial. skriv ut 40 citat 41 Serial. skriv ut 40 quotOCTquot 41 Serial. skriv ut 40 citat 41 Serial. skriv ut 40 quotBINquot 41 Serial. skriv ut 40 citat 41 för 40 x 0 x lt 64 x 41 123 Endast en del av ASCII-diagrammet, ändra för att passa skriva ut det i många format: Serial. skriv ut 40 x 41 utskrift som en ASCII-kodad decimal - samma som quotDECquot Serial. skriv ut 40 citat 41, skriver ut en flik Serial. skriv ut 40 x. DEC 41 skrivs ut som en ASCII-kodad decimal Serial. skriv ut 40 citat 41, skriver ut en flik Serial. skriv ut 40 x. HEX 41 skrivs ut som en ASCII-kodad hexadecimal seriell. skriv ut 40 citat 41, skriver ut en flik Serial. skriv ut 40 x. OCT 41 skrivs ut som en ASCII-kodad oktal Serial. skriv ut 40 citat 41, skriver ut en flik Serial. println 40 x. BIN 41 skrivs ut som en ASCII-kodad binär, lägger sedan vagnreturet med quotprintlnquot delay 40 200 41 delay 200 millisekunder 125 Serial. println 40 kvotot 41 skriver ut en annan vagnretur 125 Programmeringstips Från version 1.0 är seriell överföring asynkron Serial. print () återlämnad innan några tecken överförs.

No comments:

Post a Comment