如何将一个二进制的转换为汉字 反过来又怎转 (二进制转换为文字)

2023-03-17 1:37:29 密语知识 思思

百度搜索 汉字内码 有详细的解释。

这个无须转换,只要选择正确的存储方式即可。void * 就是二进制,强制为tchar就是汉字了,或者你可以在void * 和tchar直接做内存拷贝memmove也可以

二进制文件转换为文本

首先要清楚文件里, 储存的数据的类型,是int,long,long long 还是 float,double

其次文件有无字节序(大小端)问题

这两个问题解决了

直接按照数据类型定义一个定长数据,或者数组一次性读入,或者分批读入全部文件。

需要的话,读取以后,先转换一下字节顺序

fopen,二进制读方式,打开文件,fread 读取文件,fclose 关闭文件

然后 转换成十进制 ACII格式的数据,输出到文本文件中去。

fopen,文本写方式,打开文件,fprintf 写入文件,fclose 关闭文件。

基本上就可以了

具体可以了解一下 fopen,fread,fwrie,fclose , fprintf ,fscanf

这些C流式文件读写,打开,关闭函数

二进制如何转为汉字

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‘好’

求二进制转换为汉字的代码

echo

...................................................................................................

/*

*

二进制转汉字.c

*

*

Created

on:

2009-4-1

* Author:

*/

#includestdio.h

#includeconio.h

#includemath.h

#includestdlib.h

#includestring.h

int

main()

{

char

btos[3]

=

{'\0'};

char

b[2][9]

;

char

yon;

int

item

=

0;

int

i;

int

j

=

0;

printf("开始执行程序(y/n)

:\n");

yon

=

getch();

while('y'

==

yon||'Y'

==

yon){

do{

j

=

0;

printf("请输入第一个二进制字符串

:

");

scanf("%s",b[0]);

for(i

=

0;i

8;i++){

if('0'

!=

b[0]

'1'

!=

b[0]){j

=

1;

}

}

}while(8

!=

strlen(b[0])

||

1

==

j);

do{

j

=

0;

printf("请输入第二个二进制字符串

:

");

scanf("%s",b[1]);

for(i

=

0;i

8;i++){

if('0'

!=

b[1]

'1'

!=

b[1]){j

=

1;

}

}

}while(8

!=

strlen(b[1])

||

1

==

j);

for(i

=

0;i

2;i++){

for(j

=

7;j

=

0;j--){

if('1'

==

b[j]){

item

+=

pow(2,7-j);

}

}

btos

=

32767item;

item

=

0;

}

printf("该汉字为:%s\n是否继续(y/n)

:\n",btos);

yon

=

getch();

}

return

0;

}

echo

..................................................................................................

vscode二进制转化为文本文件

1、首先在电脑中用软件工具打开vscode二进制。

2、其次在左侧的设置界面中点击转化,选择转化的选项。

3、最后点击转换为文本文件即可。