Helt siden den første personen skrev ut 5318008 på en kalkulator, har nørder skjult hemmelige tall inni PCen, og bruker dem å forhandle hemmelige håndtrykk mellom applikasjoner og filer. I dag tar vi en titt på noen av de mer underholdende eksemplene.
De fleste programmeringsspråk bruker en 32-biters heltalltype til å representere bestemte typer data bak kulissene - internt lagres nummeret i RAM eller brukt av CPU som 32 og nuller, men i kildekoden vil den bli skrevet ut i enten vanlig desimalformat eller som hexadecimalt format, som bruker tallene 0 til 9 og bokstavene A til F.
Når operativsystemet eller et program ønsker å bestemme typen av en fil, kan den se til begynnelsen av filen for en spesiell markør som angir typen av filen. For eksempel kan en PDF-fil starte med hex-verdien 0x255044462D312E33, som tilsvarer "% PDF-1.3" i ASCII-format, eller en ZIP-fil starter med 0x504B, som tilsvarer "PK", som stammer fra det opprinnelige PKZip-verktøyet. Ved å se på denne "signaturen" kan en filtype enkelt identifiseres selv uten andre metadata.
Kompilerte Java Class-filer starter med CAFEBABE
Linux-verktøyet "fil" kan brukes fra terminalen for å bestemme typen av en fil - faktisk leser det magiske tallene fra en fil som heter "magi". Når et program ønsker å ringe en funksjon, kan det passere verdier til den funksjonen ved hjelp av standardtyper som heltall, som kan uttrykkes i kildekoden i heksadesimalt format. Dette gjelder spesielt for konstanter, som er identifikatorer som er definert med menneskelige lesbare navn som AUTOSAVE_INTERVAL, men de kartlegger til virkelig heltall (eller annen type) -verdier. Så i stedet for en programmør skrive ut en verdi som 60 hver gang de kaller funksjonen i kildekoden, kan de bruke AUTOSAVE_INTERVAL-konstanten for bedre lesbarhet. (Konstanter blir vanligvis lett gjenkjent fordi de er skrevet i alle store bokstaver).
Alle disse eksemplene kan falle under begrepet Magic Numbers, fordi de kanskje krever et bestemt heksadesimale nummer for at en funksjon eller filtype skal fungere skikkelig ... hvis verdien ikke er riktig, vil den ikke fungere. Og når en programmerer vil ha litt moro, kan de definere disse verdiene ved hjelp av heksadesimale tall som staver ut noe på engelsk, ellers kjent som hexspeak.
Morsomt med magiske tall: Noen bemerkelsesverdige eksempler
Hvis du tar en rask titt på Linux-kildekoden, ser du at systemreisen _reboot () på Linux krever en "magisk" variabel som skal overføres som tilsvarer det heksadesimale nummer 0xfee1dead. Hvis noe forsøkte å kalle den funksjonen uten å passere den magiske verdien først, ville den bare returnere en feil.
GUID (globalt unik identifikator) for en BIOS-oppstartspartisjon i GPT-partisjoneringsprogrammet er 21686148-6449-6E6F-744E -656564454649, som danner ASCII-strengen "Hah! IdontNeedEFI", en henvisning til at GPT normalt ville bli brukt i datamaskiner som erstattet BIOS med UEFI, men det behøver ikke nødvendigvis å være.
Microsoft gjemt gjemt 0x0B00B135 I deres Hyper-V virtuelle maskin-støttende kildekode sendt til Linux, endret de verdien til 0xB16B00B5, og til slutt byttet de den til desimal før den ble fjernet fra kildekoden helt.
Flere morsomme eksempler inkluderer:
0xbaaaaaad - brukes av IOS-krasjlogging for å indikere at en logg er et stakkarsnitt av hele systemet.
Se eksempler for deg selv
Som et ekstra eksempel, kan gjenopprettingsbilder for Android-telefoner som ClockworkMod Start med "ANDROID!" hvis det leses i ASCII-format.
Merk:
Ikke endre noe mens du ser deg rundt. Hex redaktører kan bryte ting!
Slik konverterer du en PDF-fil til redigerbar tekst ved hjelp av kommandolinjen i Linux
Det er flere grunner til at du kanskje vil konvertere en PDF-fil til redigerbar tekst. Kanskje du må revidere et gammelt dokument, og alt du har er PDF-versjonen av det. Konvertere PDF-filer i Windows er enkelt, men hva om du bruker Linux? RELATED: Konverter PDF-filer til Word-dokumenter og andre formater Ingen bekymringer.
Slik kjører du en Spigot Minecraft Server for tilpasset multiplayer
Minecrafts Native LAN-støtte er flott for å kjøre spill på fluen, men hvis du vil ha en dedikert, tilpasset server, er Spigot veien til gå. Spigot er bygget på en plugin API kalt Bukkit, som gjør det enkelt å tilpasse spillet ditt, og siden Bukkit-prosjektet har eksistert siden begynnelsen av Minecraft multiplayer, har mange utviklere sluppet sine egne plugins og modifikasjoner.