当前位置:首页 » 存储配置 » 二进制存储格式化

二进制存储格式化

发布时间: 2023-01-05 03:52:12

① 硬盘格式化只是把数据删掉了吗

不是,硬盘格式化不是叫硬盘毁数据。简单说格式化是把原有硬盘存储空间进行了重新调整和标记。遇到有数据的区域就将原有数据在硬盘上的二进制存储形式的文件,文件头部写成特殊标记不可直接识别,视为无用将来再有数据存储需要这个空间可以存放数据而已。如果不被后面再放的数据覆盖,那么完全可以用专业软件恢复这个特殊标记后就可以再次查看并读取了。否则数据恢复软件是怎么恢复数据的呢?

② 二进制怎么算

运行calc打开计算器,点击“查看”-“科学型”,输入十进制数,再点击“二进制”。
以上是最通俗的方法,后面的方法就要动脑了,请先做好心理准备。

十进制转二进制:
将十进制数除以2,记录余数1(整除则记0),然后结果继续除以2,直到最后1/2=0余1为止,然后把所有记录下的数倒过来排列,就是二进制结果。
比如39,反复除以2的余数依次是111001,则二进制数的39就是100111。多试几次就熟练了。
当然这是最笨的方法。实际使用中不会真的这样算。比较实用的方法是寻找2的倍数的“最近值”。比如39,39 = 32+7 = 32+4+3 = 32+4+2+1。
那么:32是2的5次方,二进制就是后面有5个0,即:100000。以此类推,4(100),2(10),1(1),所以加起来就是100111。
这个方法需要事先熟悉2的各次方(幂)对应的十进制数。2的0~10次幂依次为:1,2,4,8,16,32,64,128,256,512,1024

③ c#语言二进制数字格式化输出

static void Main(string[] args)
{
string str = string.Empty;
for(int i=1;i<=1023;i++)
{
str = Convert.ToString(i,2);
str = str.PadLeft(10, '0');
Console.WriteLine("{0}\t{1}", i, str);
}
Console.Read();
}

④ 用c语言打开文本文件,然后以二进制保存

这些都是c语言打开文件函数fopen的一个参数打开文件方式的值:
定义函数
file
*
fopen(const
char
*
path,const
char
*
mode);
函数说明
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r
打开只读文件,该文件必须存在。
r+
打开可读写的文件,该文件必须存在。
rb+
读写打开一个二进制文件,只允许读写数据。
rt+
读写打开一个文本文件,允许读和写。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
wt+
读写打开或着建立一个文本文件;允许读写。
at+
读写打开一个文本文件,允许读或在文本末追加数据。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在posix系统,包含linux都会忽略该字符。由fopen()所建立的新文件会具有s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth(0666)权限,此文件权限也会参考umask
值。
自己看吧

⑤ 二进制、八进制、十进制、十六进制是如何相互转化的越详细越好

举例说明 整数513。

1 以以十进制表示就是513

以十六进制表示0x0201(以0x开头表示16进制,其实是0x00000201)

以8进制表示1001

以二进制表示1000000001(前面的一堆0省略了)

2说明,其实在计算机内部,所有的数据都是以二进制存储,还以513为例,在计算机内部表示如下:

即二进制的

00000000 00000000 00000010 00000001

把每8个bit位合成为一个字节,即成为用16进制表示,可显示为

0x00 00 02 01 (空格是为了表达清楚)

如果把每3个bit合成为一个单元,即成为8进制表示

1001(一堆表示数值的0都省略了)

3以上是理论说明,实际应用时,都有对应的格式化函数来解决,不需要你费心这些琐碎的问题

⑥ 二进制数据,文本数据,格式化数据的区别(matlab)

文件分为许多段,一般.text存放代码,.data段存放数据,不同段是有不同属性的,例如.text段的属性是可执行的。这样就区别了代码和数据。

2.CPU指令有一个格式,一个指令包括了操作码(对应你的指令)和操作数(对应你的数据),而指令本身相对格式是固定的(可能变长)。所以CPU是很容易知道前几个二进制是什么指令,而根据这个指令又可以知道后面多少位是第一个数据,后面多少位是第二个数据。然后下一个指令的起始地址是直接存在IP寄存器里的。

⑦ MIDI二进制文件格式简析

本文主要参考自 Official MIDI Specifications

每个MIDI文件由一系列 chunk 组成,每个 chunk 的前四个字节为魔数( magic number ),是由四个ASCII字符所组成的类型标识。目前标准格式中已定义的 chunk 类型只有 header 和 track 两种,其魔数分别为 "MThd" 和 "MTrk" ,对于类型未被定义的 chunk 则应该被忽略。

每个 chunk 在其四字符类型之后紧跟一个32位无符号整数,意味这一 chunk 后续将要读入的字节个数,每个 chunk 已经读入的这八个字节不包含在内。

通常来说,一个MIDI文件中首先要存在一个 header chunk ,然后一系列 track chunk 紧随其后,格式大致如下:

在目前的标准中, header chunk 长度固定为14,其由五个部分所组成:

其中 type 固定为 "MThd" , format ntrks division 均为16位,因此 length 固定为 0x00000006 。

format 指定了整个文件的组织结构,在当前的标准下,仅支持 0x0000 、 0x0001 、 0x0002 这三种可能的值。

ntrks 表示整个文件中 track chunk 的总个数,对于 format 为零的文件来说 ntrks 的值总是 0x0001 。

最后的 division 表示了 delta-times 的含义,有 metrical time 和 time-code-based time 这两种形式,这取决于其最高位是否为零。

假如 division 最高位为零,那么就属于 metrical time 形式,这个16位无符号整数的意义为每个四分音符的ticks个数。否则属于 time-code-based time 形式,其低8位表示每帧的ticks个数,高8位为一个8位负数补码,有 -24 、 -25 、 -29 、 -30 这四种可能的值,其意义与 SMPTE 有关,以下内容摘抄自维基网络:

在这里可以发现,凭借 division 是完全不足以描述每个时间间隔的实际长度的。在规范中对此有所说明,在默认情况下,乐曲的节奏为4/4拍,速度为每分钟120拍。这类元数据应该在MIDI文件中被指定,对于 format 为 0x0000 的文件应处于其 track chunk 的开始,对于 format 为 0x0001 的文件应包含在第一个 track chunk 之内,对于 format 为 0x0002 的文件应包含在每个 track chunk 之中。

值得一提的是,未来的标准有可能会定义更多种类的 format 和 chunk ,甚至有可能为 header chunk 添加更多的参数从而使其 length 不再为 0x00000006 ,因此对于程序的实现者来说,遵守标准是十分必要的。

无论 format 的取值是什么, Track Chunks 的结构都是一致的:

length 后是一串连续的 MTrk event ,每个 MTrk event 由两部分组成:

这里的 delta-time 是一种 variable-length quantity ,其每个字节仅有7个有效位,最高位若非零则说明后面还有下一字节,最多可占据四个字节,因此其最大值为 0x0fffffff 。以下为参考示例:

delta-time 后紧跟的 event 有三种不同的类型:

MIDI event 的第一个字节通常表示 running status ,其最高位必须非零,对于 sysex event 和 meta-event 来说,这个字节分别为 0xf0 或 0xff 。

在每个 track chunk 中出现的第一个 MIDI event 必须指定 running status ,而对于后续的 MIDI event ,假如其紧跟在一个 MIDI event 后面,并且与前一个 MIDI event 有着同样的 running status ,那么这一个 MIDI event 的 running status 可以被省略。

每个 MIDI event 根据其 running status 高4位的不同而存在一个或两个单字节参数,这些参数的最高位均为零, running status 的低4位表示 channel 的编号,每个 MIDI event 只会在对应的 channel 上造成影响。举几个例子,以16进制表示:高4位为 C 意为 Program Change ,其跟随一个单字节参数,表示修改乐器音色;高4位为 9 意为 Note On ,高4位为 8 意为 Note Off ,这两者都跟随两个单字节参数,分别表示音高与力度。

中央C在 MIDI event 中的值为 0x3c ,每升高半音则加一,每降低半音则减一,通过这种规律可以推断出标准音为 0x45 。

channel 最多有16个,每个 channel 之间是独立的,也就是说不同的 channel 可以通过 Program Change 同时使用不同的音色,而又由于 Note On 和 Note Off 也是独立的,因此同一个 channel 中也可以同时播放不止一个音符。不过打击乐通常位于第10号 channel 。

音色对照表见文章末尾。

这是一种结构稍显复杂的事件信息,它可以包含一连串的 sysex event ,其基本结构如下:

这里 length bytes 的长度,如果 bytes 不以 0xf7 结尾,那么其后就要跟随一个变长的 delta-time ,然后在跟随下一个 sysex event ,就像这样:

除第一个 sysex event 之外,后续跟随的 sysex event 首字节应为 0xf7 ,且最后一个 sysex event 的最后一字节应为 0xf7 。以下是一串合法的 sysex event 示例:

以上部分的 0x8148 和 0x64 分别表示200-tick delta-time 和100-tick delta-time 。

这一部分的格式是比较固定的:

所有 meta-event 以 0xff 起始,然后紧跟一个字节的 type ,再然后跟随一个变长的 length length 的值即为 bytes 的长度。

在 Standard MIDI Files 1.0 中已经预定义了一部分 meta-event ,其中 Copyright Notice 应作为第一个 track 的第一个 event , Sequence Number 和 Sequence/Track Name 若存在则必须在任何 delta-times 非零的 event 前出现, End of Track 必须作为每个 track 的最后一个 event 。

Set Tempo 参数的意义为每个四分音符的微秒数。

Time Signature 参数的意义分别为节奏的分子、以二为底取得节奏分母的对数、节拍器每响一次的 MIDI clocks 个数、每个四分音符所包含的三十二分音符个数(最后这个我也不理解有什么意义),比如以下示例:

Key Signature 的第一个参数表示乐曲经过了移调所添加的升降号个数,第二个参数取 0x00 或 0x01 意为大调或小调。

以下音色对照表引用自 General MIDI System Level 1

⑧ C语言文件保存成二进制

1、使用fopen函数打开的时候,使用"wb"模式就可以保存二进制保存文件。

fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。

2、例子:

FILE*in,*out;
in=fopen("c:\p.png","rb");
out=fopen("c:\out.txt","wb");
chars[255]={0};
while(!feof(in))
{
intc=fgetc(in);
sprintf(s,"0x%x",c);
fputs(s,out);
}
return0;

⑨ C++中怎么将二进制数据转换成ASC码

你存在txt文件中的已经是二进制文件了,你打开txt文件时,操作系统会自动对这个二进制数据进行编码转换(如果你安装的是中文操作系统的话一般会用unicode编码转换,英文操作系统的话会用ASC编码转换),所以你看到的是系统转换后的样式。
如果你想在打开txt文件时看到的是二进格式的数字,那你只有先把double型数组转换成字符型然后保存到文件中就可以了!

python格式化二进制数

(8-len(bin(1)[2:])%8)*'0'+bin(1)[2:]
(8-len(bin(100000)[2:])%8)*'0'+bin(100000)[2:]

如果解决了您的问题请采纳!
如果未解决请继续追问

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:752
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1012
python中的init方法 发布:2025-10-20 08:17:33 浏览:719
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:879
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:775
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1128
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:352
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:229
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:912
python股票数据获取 发布:2025-10-20 07:39:44 浏览:877