Tuesday 1 August 2017

C Print Char As Binary Options


Pertanyaan ini sudah memiliki jawaban di sini: Saya ingin cara yang sangat mendasar untuk mencetak representasi biner sebuah karakter. Saya sepertinya tidak bisa menemukan kode contoh di manapun. Saya menduga Anda bisa melakukannya dalam beberapa baris tapi semua yang saya temukan terlalu panjang dan kompleks dengan menggunakan banyak fungsi yang sebelumnya tidak saya gunakan sebelumnya. Atoi muncul banyak tapi tidak standar. Apakah ada fungsi sederhana atau cara penulisan sederhana untuk mengambil variabel char dan kemudian mencetak representasi biner. Misalnya: char x adalah argumen yang diambil oleh fungsi dan x adalah 0111 1000 dicetak. Its untuk tugas sekolah di mana saya harus mengambil masukan dari string dan mencetak string dalam biner. Aku hanya perlu mendapatkan dasar-dasar mengubah char ke biner tapi aku berjuang saat ini. Tanya 20 Agustus 13 at 5:17 alex 278k 9679 134 9679 677 9679 827 ditandai sebagai duplikat oleh Mitch Wheat. Ted Hopp. Devnull WhozCraig. Graviton 20 Agustus 13 di 6:28 Pertanyaan ini telah diajukan sebelumnya dan sudah memiliki jawaban. Jika jawaban tersebut tidak sepenuhnya menjawab pertanyaan Anda, mohon mengajukan pertanyaan baru. Anda harus memposting usaha Anda. Ndash Mitch Wheat Aug 20 13 at 5:18 Yang ingin Anda lakukan adalah menggunakan operator bitwise untuk menutupi bit satu per satu dan mencetaknya ke output standar. Sebuah char di C dijamin 1 byte, jadi loop ke 8. Dalam setiap iterasi, topeng dari bit order tertinggi. Begitu memilikinya, cukup cetak ke output standar. Berikut adalah tusukan cepat yang mudah masuk akal. Untuk mendapatkan sedikit, saya bergeser ke kiri untuk mendapatkan bit bernomor (tertinggi sampai yang terendah sehingga pencetakan itu mudah) dan kemudian topeng. Saya kemudian menerjemahkannya menjadi 0 atau 1 dengan. Mencetak data yang diformat ke stdout Menuliskan string C yang ditunjukkan oleh format ke keluaran standar (stdout). Jika format mencakup penspesifikasi format (urutan awal), argumen tambahan berikut format diformat dan dimasukkan ke dalam string yang dihasilkan menggantikan masing-masing penspesifikasi. Parameter format C string yang berisi teks yang akan ditulis ke stdout. Ini opsional dapat berisi penspesifikasi format tertanam yang diganti dengan nilai yang ditentukan dalam argumen tambahan berikutnya dan diformat sesuai permintaan. Dimana karakter specifier pada akhirnya adalah komponen yang paling signifikan, karena mendefinisikan tipe dan interpretasi dari argumen yang sesuai: Signed decimal integer Unsigned decimal integer Unsigned hexadecimal integer Unsigned hexadecimal integer (uppercase) Desimal floating point, lowercase Desimal floating point, Huruf besar Notasi ilmiah (mantissaexponent), huruf kecil Notasi ilmiah (mantissaexponent), huruf besar Gunakan representasi terpendek: e atau f Gunakan representasi terpendek: E atau F Heksadesimal floating point, huruf kecil Heksadesimal floating point, huruf besar String karakter Tidak ada yang dicetak. Argumen yang sesuai harus berupa pointer ke int yang ditandatangani. Jumlah karakter yang ditulis sejauh ini tersimpan di lokasi runcing. A diikuti oleh karakter lain akan menulis single ke stream. Format specifier juga bisa berisi sub-specifiers: flags. Lebar..pengujian dan pengubah (dalam urutan itu), yang bersifat opsional dan mengikuti spesifikasi ini: Kiri-membenarkan dalam bidang yang diberikan lebar Pembenaran kanan adalah default (lihat sub-specifier lebar). Pasukan untuk mendahului hasilnya dengan tanda plus atau minus (atau -) bahkan untuk angka positif. Secara default, hanya angka negatif yang diawali dengan a - sign. Jika tidak ada tanda yang akan ditulis, ruang kosong dimasukkan sebelum nilainya. Digunakan dengan o. X atau X specifiers nilainya diawali dengan 0. 0x atau 0X masing-masing untuk nilai yang berbeda dari nol. Digunakan dengan a. SEBUAH . E. E. F. F. G atau G memaksa output tertulis mengandung titik desimal meskipun tidak ada lagi digit yang mengikuti. Secara default, jika tidak ada digit yang mengikuti, tidak ada titik desimal yang ditulis. Kiri-bantalan nomor dengan nol (0) bukan ruang saat padding ditentukan (lihat lebar sub-specifier). Untuk penspesifikasi bilangan bulat (d. I. U. X. X): presisi menentukan jumlah digit minimum yang akan ditulis. Jika nilai yang ditulis lebih pendek dari angka ini, hasilnya dilapisi dengan angka nol terkemuka. Nilai tidak terpotong meski hasilnya lebih panjang. Ketepatan 0 berarti tidak ada karakter yang ditulis untuk nilai 0. Untuk sebuah . SEBUAH . E. E. F dan F specifiers: ini adalah jumlah digit yang akan dicetak setelah titik desimal (secara default, ini adalah 6). Untuk g dan G specifiers: Ini adalah jumlah maksimum digit signifikan yang akan dicetak. Untuk S . Ini adalah jumlah maksimal karakter yang akan dicetak. Secara default semua karakter dicetak sampai karakter null akhir ditemui. Jika periode ditentukan tanpa nilai eksplisit untuk presisi. 0 diasumsikan Ketepatan tidak ditentukan dalam format string, tapi sebagai argumen nilai integer tambahan sebelum argumen yang harus diformat. Panjang sub-specifier memodifikasi panjang tipe data. Ini adalah bagan yang menunjukkan jenis yang digunakan untuk menafsirkan argumen yang sesuai dengan dan tanpa specifier panjang (jika jenis yang berbeda digunakan, promosi jenis atau konversi yang tepat dilakukan, jika diizinkan): Catatan mengenai specifier c: dibutuhkan int ( Atau wintt) sebagai argumen, namun melakukan konversi yang tepat menjadi nilai char (atau wchart) sebelum memformatnya untuk output. Catatan: Baris kuning menunjukkan penspesifikasi dan sub-penspesifikasi yang diperkenalkan oleh C99. Lihat ltcinttypesgt untuk penspesifikasi untuk jenis yang diperluas. . (Argumen tambahan) Bergantung pada format string, fungsi tersebut mungkin mengharapkan urutan argumen tambahan, masing-masing berisi nilai yang akan digunakan untuk mengganti specifier format dalam string format (atau pointer ke lokasi penyimpanan, untuk n). Harus ada setidaknya sebanyak argumen ini sebagai jumlah nilai yang ditentukan dalam format specifiers. Argumen tambahan diabaikan oleh fungsinya. Nilai Kembali Pada kesuksesan, jumlah total karakter yang ditulis dikembalikan. Jika terjadi kesalahan penulisan, indikator kesalahan (ferror) diatur dan angka negatif dikembalikan. Jika terjadi kesalahan pengkodean karakter multibyte saat menulis karakter lebar, errno diatur ke EILSEQ dan angka negatif dikembalikan. Kompatibilitas Implementasi perpustakaan tertentu dapat mendukung penspesifikasi dan sub-penspesifikasi tambahan. Yang terdaftar di sini didukung oleh standar C dan C terbaru (keduanya diterbitkan pada tahun 2011), namun yang berwarna kuning diperkenalkan di C99 (hanya diperlukan untuk implementasi C sejak C11), dan mungkin tidak didukung oleh perpustakaan yang mematuhi standar yang lebih tua. Menempatkan menulis string ke stdout (fungsi) scanf Membaca data terformat dari stdin (fungsi) fprintf Menulis data yang diformat ke stream (fungsi) fwrite Tulis blok data ke fungsi stream (fungsi): konstanta makro: Baiklah, saya tahu ada beberapa diskusi tentang Ini di forum tapi bantuan dan solusinya diluar kemampuan saya. Saya seorang siswa c awal dan telah diberi tugas untuk mengubah sekumpulan karakter ke representasi biner, kemudian, saya harus bisa mengubah string biner menjadi nilai karakter ascii. Aku mendapat bagian pertama saja tapi aku terjebak pada konversi dari nilai biner ke ascii. Semua diskusi tentang ini yang saya baca melibatkan petunjuk, array, dan juga fungsi yang ditentukan pengguna dan kami belum pernah mempelajari pilihan mereka. Jadi, apakah ada cara untuk melakukan ini dengan pengetahuan hanya tentang loop, perpustakaan, dan variabel yang menentukan Saya telah melihat melalui dua buku, forum cplusplus, dan keseluruhan daftar di bagian referensi dan saya tidak tahu bagaimana melakukan seperti itu. tugas. Saya pikir saya semacam mendapatkan array dari bantuan saya menerima mencari tahu bagian pertama tapi saya rasa saya tidak mendapatkan mereka cukup. Jika, saya bisa mendapatkan beberapa petunjuk, petunjuk, atau dorongan apapun ke arah yang benar tentang bagaimana melakukan ini dengan pengetahuan saya yang terbatas. Jadilah selamanya bersyukur. Terima kasih sebelumnya dan Heres kode saya sejauh ini. Jangan ragu untuk mengkritik saya jika saya telah melakukan sesuatu dengan cara yang tidak perlu. ) Termasuk ltiostreamgt termasuk ltstringgt termasuk ltbitsetgt termasuk ltcmathgt termasuk ltiomanipgt termasuk ltbitsetgt termasuk ltclimitsgt menggunakan namespace dan pada akhirnya dapat diakhiri dengan serangkaian karakter: getline (cin, charin) cout ltlt charin ltlt endl for (sizet i 0 i Lt charin. size () i) cout ltlt bitsetlt8gt (charini) cout ltlt endl ltlt cout ltlt Masukkan string biner: getline (cin, binin) cout ltlt binin ltlt endl Memeriksa bahwa input bekerja. Apa yang akan membuat pekerjaan ini? Aku tahu aku mungkin perlu untuk loop. Saya telah mencoba segalanya dari forum dan semua kemampuan saya di saat ini. Karena itu, saya mengalami masalah yang aneh. Jadi saya telah melakukan kode saya di Xcode. Ini bekerja dengan sempurna. Tapi kemudian saya menyalin dan menempelkannya ke vim di server sekolah saya untuk mengubahnya dan compiler tidak akan mengkompilasinya. Kesalahannya adalah sebagai berikut: strings. cpp: Dalam fungsi int main (): strings. cpp: 45: error: expected primary-expression sebelum token strings. cpp: 45: error: expected primary-expression before token strings. cpp: 45 : Error: expected primary-expression sebelum char strings. cpp: 45: error: allof tidak dinyatakan dalam lingkup ini baris saya 45 sesuai dengan garis Anda 14. Saya mengeluarkan sebelum char dan itu pasti menginginkan ekspresi utama sebelum char dan allof Masih belum dinyatakan dalam ruang lingkup, jadi, saya memasukkannya kembali. Saya membaca semua fungsi dan baris 14 Anda benar berdasarkan bagian referensi di sini di cplusplus. Tak satu pun dari rekan-rekan saya atau TA dapat mengetahui mengapa ada masalah. Setiap pikiran saya benar-benar bingung. Allof () ada dari C11 dan fungsi lambda. Entah kompilator Anda terlalu tua atau Anda perlu mengaktifkan bendera untuk ini. Nyebelin, jadi dugaan saya adalah kompiler saya sudah terlalu tua. Apakah ada fungsi serupa yang bekerja dengan cara yang sama atau apakah saya harus melakukan ini dengan cara yang berbedaDeskripsi Mencetak data ke port serial sebagai teks ASCII yang dapat dibaca manusia. Perintah ini bisa mengambil banyak bentuk. Angka dicetak menggunakan karakter ASCII untuk setiap digit. Floats juga dicetak sebagai digit ASCII, default ke dua tempat desimal. Byte dikirim sebagai karakter tunggal. Karakter dan senar dikirim seperti apa adanya. Sebagai contoh: Serial. print (78) memberi 78 Serial. print (1.23456) memberi 1.23 Serial. print (N) memberi N Serial. print (Hello world.) Memberi Hello world. Parameter kedua opsional menentukan basis (format) untuk menggunakan nilai yang diizinkan adalah BIN (biner, atau basis 2), OCT (oktal, atau basis 8), DEC (desimal, atau basis 10), HEX (heksadesimal, atau basis 16) . Untuk bilangan floating point, parameter ini menentukan jumlah tempat desimal yang akan digunakan. Sebagai contoh: Serial. print (78, BIN) memberi 1001110 Serial. print (78, OCT) memberi 116 Serial. print (78, DEC) memberi 78 Serial. print (78, HEX) memberi 4E Serial. println (1.23456, 0 ) Memberi 1 Serial. println (1.23456, 2) memberi 1.23 Serial. println (1.23456, 4) memberi 1.2346 Anda dapat melewati string berbasis memori flash ke Serial. print () dengan membungkusnya dengan F (). Sebagai contoh. Serial. print (val) Serial. print (val, format) Parameter val: nilai yang akan dicetak - format tipe data apa pun: menentukan basis bilangan (untuk tipe data integral) atau jumlah tempat desimal (untuk tipe floating point) sizet ( Panjang): print () mengembalikan jumlah byte yang ditulis, meskipun membaca angka itu opsional Menggunakan loop FOR untuk data dan mencetak angka dalam berbagai format. Int x 0 variable void setup 40 41 123 Serial. Mulai 40 9600 41 buka port serial pada 9600 bps: 125 void loop 40 41 123 label cetak Serial. Cetak 40 quotNO FORMATquot 41 mencetak label Serial. Cetak 40 quot t quot 41 mencetak tab Serial. Cetak 40 quotDECquot 41 Serial. Cetak 40 quot t quot 41 Serial. Cetak 40 quotHEXquot 41 Serial. Cetak 40 quot t quot 41 Serial. Cetak 40 quotOCTquot 41 Serial. Cetak 40 quot t quot 41 Serial. Cetak 40 quotBINquot 41 Serial. Cetak 40 quot t quot 41 untuk 40 x 0 x lt 64 x 41 123 hanya bagian dari bagan ASCII, ganti untuk mencetaknya dalam banyak format: Serial. Cetak 40 x 41 dicetak sebagai desimal yang dikodekan ASCII - sama dengan seri quotDECquot. Cetak 40 quot t quot 41 mencetak tab Serial. Cetak 40 x. DEC 41 mencetak sebagai serial desimal yang dikodekan ASCII. Cetak 40 quot t quot 41 mencetak tab Serial. Cetak 40 x. HEX 41 dicetak sebagai Serial heksadesimal ASCII. Cetak 40 quot t quot 41 mencetak tab Serial. Cetak 40 x. OCT 41 dicetak sebagai Serial oktal ASCII. Cetak 40 quot t quot 41 mencetak tab Serial. Println 40 x. BIN 41 dicetak sebagai biner yang dikodekan ASCII kemudian menambahkan carriage return dengan tanda kutip tunda penundaan 40 200 41 delay 200 milidetik 125 Serial. Println 40 quotquot 41 mencetak kembali carriage return lainnya 125 Tip Pemrograman Seperti versi 1.0, transmisi serial adalah asynchronous Serial. print () akan kembali sebelum ada karakter yang dikirim.

No comments:

Post a Comment