C++ 如何讀取亂碼文件內容?

来源:https://www.cnblogs.com/MoRanPiao/archive/2022/10/09/16772707.html
-Advertisement-
Play Games

本人近期在做國創項目,其中需要使用重覆碼,並且使用經過重覆碼編碼後的數據進行加密。 問題是重覆碼編碼後再讀取就亂碼了,而且我不知道怎麼樣可以讀取出二進位數據 重覆碼代碼如下: #include<iostream> #include<stdlib.h> #include<string> #includ ...


本人近期在做國創項目,其中需要使用重覆碼,並且使用經過重覆碼編碼後的數據進行加密。
問題是重覆碼編碼後再讀取就亂碼了,而且我不知道怎麼樣可以讀取出二進位數據
重覆碼代碼如下:
  1.   #include<iostream>
  2.   #include<stdlib.h>
  3.   #include<string>
  4.   #include<fstream>
  5.    
  6.   using namespace std;
  7.    
  8.   static unsigned int inbfr,outbfr;
  9.   static FILE *outfile,*infile;
  10.   static int incnt,outcnt,mask;
  11.    
  12.   voidinit()
  13.   {
  14.   outbfr=0;
  15.   outcnt=8;
  16.   inbfr=0;
  17.   incnt=8;
  18.   mask=0x80; //10000000
  19.   }
  20.    
  21.   intgetbit()
  22.   {
  23.   int bitval;
  24.   bitval=inbfr&mask; //bitval0000000
  25.   incnt--; //7
  26.   mask >>= 1; //01000000
  27.   bitval >>= incnt;
  28.   if (incnt==0)
  29.   {
  30.   inbfr=fgetc(infile);
  31.   incnt=8;
  32.   mask=0x80;
  33.   }
  34.   return bitval; //0000000bitval
  35.   }
  36.    
  37.   voidputbit( int bitval)
  38.   {
  39.   outbfr = (outbfr<<1)&255; //00000000
  40.   outbfr |= bitval; //0000000bitval
  41.   outcnt --;
  42.   if (outcnt==0)
  43.   {
  44.   fputc(outbfr,outfile);
  45.   outcnt = 8;
  46.   }
  47.   }
  48.    
  49.   voidalignbits()
  50.   {
  51.   if (outcnt!=8)
  52.   {
  53.   for (int i=0;i<outcnt;i++)
  54.   putbit(0);
  55.   }
  56.   }
  57.    
  58.    
  59.   voiddecode()
  60.   {
  61.   int n = 3;
  62.   int bitsum;
  63.   if ((infile = fopen("ciphertext.txt", "rb")) == NULL)
  64.   {
  65.   printf("cannot open infile!!!\n");
  66.   exit(0);
  67.   }
  68.   if ((outfile = fopen("decryption.txt", "wb")) == NULL)
  69.   {
  70.   printf("cannot open outfile!!!\n");
  71.   exit(0);
  72.   }
  73.   init();
  74.   inbfr = fgetc(infile);
  75.   while (!feof(infile))
  76.   {
  77.   bitsum = 0;
  78.   for (int i = 0; i < n; i++) bitsum += getbit();
  79.   if (bitsum >= 2) putbit(1);
  80.   else putbit(0);
  81.   }
  82.   alignbits();
  83.   fclose(infile);
  84.   fclose(outfile);
  85.   }
  86.    
  87.    
  88.   voidcode()
  89.   {
  90.   int n = 3;
  91.   int bitval;
  92.   if((infile=fopen("plaintext.txt","rb"))==NULL)
  93.   {
  94.   int a;
  95.   cout << "請輸入數值: ";
  96.   cin >> a;
  97.   ofstream file_writer(
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • stream是java8新出的抽象概念,他可以讓你根據你期望的方式來處理集合數據,能夠輕鬆的執行複雜的查找、過濾和映射數據等操作。Stream 使用一種類似用 SQL 語句從資料庫查詢數據的直觀方式來提供一種對 Java 集合運算和表達的高階抽象。 ...
  • 數據結構基礎—棧和隊列 一、棧和隊列的基本概念和性質 棧和隊列都是特殊的線性表 對他們的操作有著規定和限制:在插入和刪除時只能對某一端操作 棧:只能在一端進行(先進後出) 隊列:只能在表尾插入,在表頭刪除(先進先出) 二、棧 表頭為棧底,表尾為棧頂 1.棧的基本操作和規則 a.進棧和出棧 進棧:棧頂 ...
  • 垃圾回收器 垃圾回收是釋放掉那些不再被使用的記憶體空間的過程。 換句話說,垃圾回收器會去檢查哪些對象超出範圍並且不會再被引用到,然後它回去釋放掉那些對象占用的記憶體空間。這個過程實在 go 程式運行中以併發的方式去進行的,不是 go 程式執行之前,也不是 go 程式執行之後。go 垃圾回收器實現的說明文 ...
  • 前幾天看報道說: 一位小哥用AI繪畫工具Midjourney生成的作品,在美國科羅拉多州博覽會的藝術比賽中獲得了第一名。 作者表示,他多次調整了輸入的提示詞,生成了100多幅畫作,經過數周的修改和挑選,才選出了三幅最滿意的作品。 下圖就是獲獎作品 之前我玩過DF,還寫過一篇文章➡️AI繪畫 Disc ...
  • python 有許多可視化工具,但本書只介紹Matplotlib。Matplotlib是一種2D的繪圖庫,它可以支持硬拷貝和跨系統的交互,它可以在python腳本,IPython的交互環境下、Web應用程式中使用。該項目是由John Hunter 於2002年啟動,其目的是為python構建MATL ...
  • STL和c++標準庫 標準模板庫STL部分包含在C++標準庫中的軟體庫。 c++標準庫:即以std::開頭,但是部分編譯器廠商也會把STL的內容放在std:: namespace裡面 由於一個常見的誤解,您可能會將C++標準庫視為“STL”,或者將工具鏈中C++標準庫的實現部分視為“STL實現”。 ...
  • IoC容器的實現學習——01 簡介 在以前通常情況下一個簡單的項目一般由兩個及兩個以上的類構成,大多數的類集數據和數據的處理方法於一體,類之間通過依賴彼此的數據和方法實現業務邏輯,這個獲取依賴的過程是自己實現的,導致代碼高度耦合以及難以測試。 所以出現了DI (依賴註入)、IoC (控制反轉) 這些 ...
  • java基礎-文件與IO 以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 https://www.cnblogs.com/lyh1024/p/16772853.html IO是一個龐大的體系,信息傳遞的通道靠IO,例如:文件讀寫、上傳下載、網路通信等都要用到。 1.File類的基本概念 Fil ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...