giovedì 12 marzo 2026

C# verificare se un file è pdf con la tecnica magic number

Durante lo sviluppo software, possiamo avere l'esigenza di verificare l'effettivo tipo di file, non solo dall'estensione ma dal punto di vista digitale.
Nel gestire i file, potrebbe memorizzare file che non sono per quel tipo, solo perchè rinominati.
Tramite la tecnica del Magic Number, un modo per verificare i primi byte di un file. Di seguito un frammento di codice per verificare se un file è pdf oppure no, nel linguaggio di programmazione C#.


C#

private void BtnVerificaFilePdfMagicNumber_Click(object sender, EventArgs e)

{

    try

    {

        string percorsoNomeFile = @"C:\varie\test.pdf"; // Percorso del file PDF

        byte[] pdfMagicNumber = { 0x25, 0x50, 0x44, 0x46, 0x2D }; // ASCII for "%PDF-"

        bool isPdf = true;

        using (FileStream fs = new FileStream(percorsoNomeFile, FileMode.Open, FileAccess.Read))

        {

            byte[] buffer = new byte[pdfMagicNumber.Length];

            fs.ReadExactly(buffer);

 

            for (int i = 0; i < pdfMagicNumber.Length; i++)

            {

                if (buffer[i] != pdfMagicNumber[i])

                {

                    isPdf = false;

                    break;

                }

            }

                    

        }

 

        if (isPdf)

        {

            MessageBox.Show( "E' un file pdf");

        }

        else

        {

            MessageBox.Show("Non è un file PDF valido.");

        }

 

    }

    catch (Exception ex)

    {

        MessageBox.Show($"Errore : {ex.Message}");

    }

}






mercoledì 11 marzo 2026

Microsoft Sql Server, istruzione insert SQL per l'inserimento dell'elenco dei prefissi internazionali dei cellulari

L'istruzione SQL di tipo "Insert", qui di seguito, permette l'inserimento in una tabella di un database "Microsoft Sql Server", di tutti i prefissi internazionali dei cellulari aggiornato ad oggi.
Supponiamo di avere una tabella denominata "Cellulari", con tre campi, una colonna di tipo Int, contatore, chiave denominata ID, un campo varchar di 50 denominato Descrizione, ed un campo di tipo Varchar di 50 denominato Prefisso, e vogliamo inserire i vari prefissi dei cellulari, con il nome della nazione, l'istruzione qui di seguito effettua tutto ciò.

Di seguito l'istruzione di inserimento dati.



INSERT INTO dbo.Cellulari(Descrizione, Prefisso)

VALUES

('Afghanistan', '+93'),

('Albania', '+355'),

('Algeria', '+213'),

('Andorra', '+376'),

('Angola', '+244'),

('Argentina', '+54'),

('Armenia', '+374'),

('Australia', '+61'),

('Austria', '+43'),

('Azerbaigian', '+994'),

('Belgio', '+32'),

('Bielorussia', '+375'),

('Bolivia', '+591'),

('Bosnia Erzegovina', '+387'),

('Brasile', '+55'),

('Bulgaria', '+359'),

('Cambia', '+256'),

('Camerun', '+237'),

('Canada', '+1'),

('Ciad', '+235'),

('Cile', '+56'),

('Cina', '+86'),

('Cipro', '+357'),

('Colombia', '+57'),

('Congo', '+242'),

('Corea del Nord', '+850'),

('Corea del Sud', '+82'),

('Costa d''Avorio', '+225'),

('Costa Rica', '+506'),

('Croazia', '+385'),

('Cuba', '+53'),

('Danimarca', '+45'),

('Ecuador', '+593'),

('Egitto', '+20'),

('El Salvador', '+503'),

('Emirati Arabi Uniti', '+971'),

('Eritrea', '+291'),

('Estonia', '+372'),

('Etiopia', '+251'),

('Filippine', '+63'),

('Finlandia', '+358'),

('Francia', '+33'),

('Gabon', '+241'),

('Gambia', '+220'),

('Georgia', '+995'),

('Germania', '+49'),

('Ghana', '+233'),

('Giamaica', '+1 876'),

('Giappone', '+81'),

('Gibilterra', '+350'),

('Grecia', '+30'),

('Grenada', '+1 473'),

('Groenlandia', '+299'),

('Guadalupa', '+590'),

('Guam', '+1 671'),

('Guatemala', '+502'),

('Guinea', '+224'),

('Guinea Bissau', '+245'),

('Guinea Equatoriale', '+240'),

('Guyana', '+592'),

('Haiti', '+509'),

('Honduras', '+504'),

('Hong Kong', '+852'),

('India', '+91'),

('Indonesia', '+62'),

('Iran', '+98'),

('Iraq', '+964'),

('Irlanda', '+353'),

('Islanda', '+354'),

('Isole Cayman', '+1 345'),

('Isole Falkland', '+500'),

('Isole Fær Øer', '+298'),

('Isole Marianne', '+1 670'),

('Isole Marshall', '+692'),

('Isole Norfolk', '+672'),

('Isole Salomone', '+677'),

('Israele', '+972'),

('Italia', '+39'),

('Jersey', '+44-1534'),

('Kazakistan', '+7'),

('Kenya', '+254'),

('Kirghizistan', '+996'),

('Kiribati', '+686'),

('Kuwait', '+965'),

('Laos', '+856'),

('Lesotho', '+266'),

('Lettonia', '+371'),

('Libano', '+961'),

('Liberia', '+231'),

('Libia', '+218'),

('Liechtenstein', '+423'),

('Lituania', '+370'),

('Lussemburgo', '+352'),

('Macao', '+853'),

('Macedonia', '+389'),

('Madagascar', '+261'),

('Malawi', '+265'),

('Maldive', '+960'),

('Malesia', '+60'),

('Mali', '+223'),

('Malta', '+356'),

('Marocco', '+212'),

('Martinica', '+596'),

('Mauritania', '+222'),

('Mauritius', '+230'),

('Messico', '+52'),

('Micronesia', '+691'),

('Moldavia', '+373'),

('Monaco', '+377'),

('Mongolia', '+976'),

('Montenegro', '+382'),

('Montserrat', '+1 664'),

('Mozambico', '+258'),

('Namibia', '+264'),

('Nauru', '+674'),

('Nepal', '+977'),

('Nicaragua', '+505'),

('Niger', '+227'),

('Nigeria', '+234'),

('Niue', '+683'),

('Norvegia', '+47'),

('Nuova Caledonia', '+687'),

('Nuova Zelanda', '+64'),

('Oman', '+968'),

('Paesi Bassi', '+31'),

('Pakistan', '+92'),

('Palau', '+680'),

('Panama', '+507'),

('Papua Nuova Guinea', '+675'),

('Paraguay', '+595'),

('Perù', '+51'),

('Polinesia Francese', '+689'),

('Polonia', '+48'),

('Portogallo', '+351'),

('Porto Rico', '+1 787'),

('Qatar', '+974'),

('Regno Unito', '+44'),

('Repubblica Ceca', '+420'),

('Repubblica Centrafricana', '+236'),

('Repubblica Democratica del Congo', '+243'),

('Repubblica Dominicana', '+1 809'),

('Réunion', '+262'),

('Romania', '+40'),

('Ruanda', '+250'),

('Russia', '+7'),

('Sahara Occidentale', '+212'),

('Saint Kitts e Nevis', '+1 869'),

('Saint Lucia', '+1 758'),

('São Tomé e Príncipe', '+239'),

('Senegal', '+221'),

('Serbia', '+381'),

('Seychelles', '+248'),

('Sierra Leone', '+232'),

('Singapore', '+65'),

('Siria', '+963'),

('Slovacchia', '+421'),

('Slovenia', '+386'),

('Somalia', '+252'),

('Spagna', '+34'),

('Sri Lanka', '+94'),

('Stati Uniti d''America', '+1'),

('Sudafrica', '+27'),

('Sudan', '+249'),

('Sudan del Sud', '+211'),

('Suriname', '+597'),

('Svezia', '+46'),

('Svizzera', '+41'),

('Swaziland', '+268'),

('Tagikistan', '+992'),

('Taiwan', '+886'),

('Tanzania', '+255'),

('Thailandia', '+66'),

('Togo', '+228'),

('Tokelau', '+690'),

('Tonga', '+676'),

('Trinidad e Tobago', '+1 868'),

('Tunisia', '+216'),

('Turchia', '+90'),

('Turkmenistan', '+993'),

('Turks e Caicos', '+1 649'),

('Tuvalu', '+688'),

('Ucraina', '+380'),

('Uganda', '+256'),

('Ungheria', '+36'),

('Uruguay', '+598'),

('Uzbekistan', '+998'),

('Vanuatu', '+678'),

('Venezuela', '+58'),

('Vietnam', '+84'),

('Wallis e Futuna', '+681'),

('Yemen', '+967'),

('Zambia', '+260'),

('Zimbabwe', '+263');