×

二进制转换文字

二进制转换文字(将二进制转换成汉字)

admin admin 发表于2023-05-09 13:35:18 浏览31 评论0

抢沙发发表评论

本文目录

将二进制转换成汉字


这段信息是:ILOVEYOU(直接写这段居然没有通过)解决办法(C语言实现):
#include 《cmath》
#include 《cstdio》
#include 《cstring》
#include 《algorithm》
#include 《functional》
#include 《queue》using namespace std;int main(){
char str=“0000100100001100000011110001011000000101000110010000111100010101“;
char out[1《《6]={0};
for(int i=0;i《strlen(str);i++){
out[(int)i/8]*=2;
out[(int)i/8]+=(str[i]-’0’);
}
for(int k=1;k《=128;k++){
for(i=0;i《strlen(str)/8;i++){
out[i]-=k;
}
printf(“%s\n“,out);
}
return 0;
}输出当k=127时输出的ILOVEYOU,怎么样,LZ高兴哇,哈哈~~

二进制文件转换为文本


首先要清楚文件里, 储存的数据的类型,是int,long,long long 还是 float,double
其次文件有无字节序(大小端)问题
这两个问题解决了
直接按照数据类型定义一个定长数据,或者数组一次性读入,或者分批读入全部文件。
需要的话,读取以后,先转换一下字节顺序
fopen,二进制读方式,打开文件,fread 读取文件,fclose 关闭文件
然后 转换成十进制 ACII格式的数据,输出到文本文件中去。
fopen,文本写方式,打开文件,fprintf 写入文件,fclose 关闭文件。
基本上就可以了
具体可以了解一下 fopen,fread,fwrie,fclose , fprintf ,fscanf
这些C流式文件读写,打开,关闭函数

求助:如何把二进制转换成字符


我整理了几种常见的方法,进行转换二进制和字符串。相信对我们日后的工作是有帮助的
string username = “chenxizhang“;
byte buffer = System.Text.Encoding.UTF8.GetBytes(username); //这是把字符串转成字节数组
Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer)); //这是把字节数组再转回到字符串

二进制如何转为汉字


  1. 汉字信息交换码(国标码)
  《信息交换用汉字 编码字符集·基本集》是我国于1980年制定的国家标准 GB2312-80,代号为国标码,是国家规定的用于汉字信息处理使用的代码依据。
   GB2312-80中规定了信息交换用的6763个汉字和682个非汉字图形符号(包括几种外文字母、数字和符号)的代码。
  6763个汉字又按其 使用频度、组词能力以及用途大小分成一级常用汉字3755个和二级常用汉字3008个。
  一级汉字按拼音字母顺序排列;若遇同音字,则 按起笔的笔形顺序排列;若起笔相同,则按第二笔的笔形顺序排列,依次类推。所谓笔形顺序,就是横、竖、撇、点和折的顺序。二级汉字按 部首顺序排列。
  在此标准中,每个汉字(图形符号)采用双字节表示。每个字节只用低7位,最高位恒为1。由于低7位中有34种状态是用 于控制字符,因此,只有94(128-34=94)种状态可用于汉字编码。这样,双字节的低7位只能表示94×94=8836种状态。

编码范围

二进制数码

十进制数码

基本 ASCII 码    
00000000~01111111    
0~127    

控制字符    
00000000~00100000、01111111    
0~32、127    

可用汉字段    
00100001~01111110    
33~126 (1~94)    

扩充 ASCII 码    
10000000~11111111    
128~255    

控制字符    
10000000~10100000、11111111    
128~160、255    

GB2312-80    
10100001~11111110    
161~254 (1~94)    

  此标准的汉字编码表有94行、94列,其行号称为区号,列号称为位号。双字节中,用 高字节表示区号,低字节表示位号。非汉字图形符号置于第1~11区,一级汉字3755个且于第16~55区,二级汉字3008个置于第56~87区。
  每个图形字符的汉字交换码,均用两个字节的低7位二进制码表示。汉字国标码通常用十六进制数表示。
  例如:“中”字的区号为 54,位号为48,计算它的二进制数和十六进制数国标码。
    解:先将区、位号分别加上 32 :
      54+32=86
       48+32=80
    分别转换为二进制数:
      (86)10=01010110
      (80)10=0 1010000
  得到二进制数国标码为:
      01010110 01010000。
  最后通过 8 4 2 1 ── 二进制取位法转换成十六 进制汉字国标码为:5650。
  又如“国”字的区号为25,位号为90,用以上相同的方法得到它的国标码为:
  二进制:00111001 01111010
  十六进制:397A

----------------------------------------------------------------

基于以上原则,则

  11000100,11100011,10111010,11000011

》(1100 0100 1110 0011)2,(1011 1010 1100 0011)2

》(C4E3)16,(BAC3)16

》查表可知:C4E3》》‘你’,BAC3》》‘好’


怎么把二进制文件转换成文本文件


如果楼主是问Dos 和 Unix文本格式互相转化,那就是unix2dos, dos2unix两个命令。
  Unix文件是不区分二进制和文本格式的,不存在什么“二进制和文本互相转化”问题。对文件的处理,完全在于应用程序怎么去处理它。例如,编译出来的a.out是ELF格式的二进制文件,用shell就是直接加载并运行该程序,但是如果用file a.out,则是从a.out中提取信息来判断a.out文件格式。
  如果是在编程中,那更不用区分,FILE *fp = fopen(yourfilename, “r“)和fopen(yourfilename, “rb“)是完全一样的。

请问二进制如何表示汉字


汉字有两种编码:国标码与机内码。 

国标码是“中华人民共和国国家标准信息交换汉字编码“,代号为“GB2312-80“。在国标码的字符集中,收集了一级汉字3755个,二级汉字3008个,图形符号682个,共7445个。一个汉字对应一个区位码,由四位数字组成,前两位数字为区码(0~94),后两位数字为位码(0~94)。机内码是指汉字在计算机中的编码 

汉字的机内码占两个字节,分别称为机内码的高位与低位;机内码高位=区码+A0H   机内码低位=位码+A0H。

扩展资料:

国标码的机内码为二字节长的代码,它是在相应国标码的每个字节最高位上加“1”,即

汉字机内码=汉字国标码+8080H

例如,上述“啊”字的国标码是3021H,其汉字机内码则是B0A1H。

汉字机内码的基础是汉字国标码。

机内码:为了避免ASCII码和国标码同时使用时产生二义性问题,大部分汉字系统都采用将国标码每个字节高位置1作为汉字机内码。这样既解决了汉字机内码与西文机内码之间的二义性,又使汉字机内码与国标码具有极简单的对应关系。