• 关于 二进制有什么用 的搜索结果

回答

1。二进制与十进制数间的转换 (1)二进制转换为十进制 将每个二进制数按权展开后求和即可。请看例题: 把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10 (2)十进制转换为二进制 一般需要将十进制数的整数部分与小数部分分开处理。 整数部分计算方法:除2取余法请看例题: 十进制数(53)10的二进制值为(110101)2 小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题: 将(0.5125)10转换成二进制。(0.5125)10=(0.101)2 2。 八进制、十六进制与十六进制间的转换 八进制、十六进制与十六进制之间的转换方法与二进制,同十进制之间的转换方法类似。例如: (73)8=7*81+3=(59)10 (0.56)8=5*8-1+6*8-2=(0.71875)10 (12A)16=1*162+2*161+A*160=(298)10 (0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10 十进制整数→→→→→八进制方法:“除8取余” 十进制整数→→→→→十六进制方法:“除16取余” 例如: (171)10=(253)8 (2653)10=(A5D)16 十进制小数→→→→→八进制小数 方法:“乘8取整” 十进制小数→→→→→十六进制小数方法:“乘16取整”例如: (0。71875)10=(0.56)8 (0.142578125)10=(0.3C8)16 3.非十进制数之间的转换 (1)二进制数与八进制数之间的转换 转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如: (423。45)8=(100 010 011.100 101)2 (1001001.1101)2=(001 001 001.110 100)2=(111.64)8 2。二进制与十六进制转换 转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如: (ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2 (101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……必竟C/C++是高级语言。 比如: int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。 但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢。 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成 十进制 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0 第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 22 + 1 * 23 + 1 * 25 + 1 * 26 = 100 6.2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839 6.2.3 八进制数的表达方法 C,C++语言中,如何表达一个八进制数呢。如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。 所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。 由于C和C++都没有提供二进制数的表达方法,所以,这里所学的八进制是我们学习的,CtC++语言的数值表达的第二种进制法。 现在,对于同样一个数,比如是100,我们在代码中可以用平常的10进制表达,例如在变量初始化时: int a = 100; 我们也可以这样写: int a = 0144; //0144是八进制的100;一个10进制数如何转成8进制,我们后面会学到。 千万记住,用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制。不过,有一个地方使用八进制数时,却不能使用加0,那就是我们前面学的用于表达字符的“转义符”表达法。 6.2.4 八进制数在转义符中的使用 我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符。 比如,查一下第5章中的ASCII码表,我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。 事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。 6.2.5 十六进制数转换成十进制数 2进制,用两个阿拉伯数字:0、1; 8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7; 10进制,用十个阿拉伯数字:0到9; 16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊。 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 假设有一个十六进数 2AF5, 那么如何换算成10进制呢。 用竖式计算: 2AF5换算成10进制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997 (别忘了,在上面的计算中,A表示10,而F表示15) 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。 假设有人问你,十进数 1234 为什么是 一千二百三十四。你尽可以给他这么一个算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 6.2.6 十六进制数的表达方法 如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。 C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O) 以下是一些用法示例: int a = 0x100F; int b = 0x70 + a; 至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。 6.2.7 十六进制数在转义符中的使用 转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 '?' 字符,可以有以下表达方式: '?' //直接输入字符 '\77' //用八进制,此时可以省略开头的0 '\0x3F' //用十六进制 同样,这一小节只用于了解。除了空字符用八进制数 '\0' 表示以外,我们很少用后两种方法表示一个字符。 6.3 十进制数转换到二、八、十六进制数 6.3.1 10进制数转换为2进制数 给你一个十进制,比如:6,如果将它转换成二进制数呢。 10进制数转换成二进制数,这是一个连续除2的过程: 把要转换的数,除以2,得到商和余数, 将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。 听起来有些糊涂。我们结合例子来说明。比如要转换6为二进制数。 “把要转换的数,除以2,得到商和余数”。 那么: 要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 (不要告诉我你不会计算6÷3。) “将商继续除以2,直到商为0……” 现在商是3,还不是0,所以继续除以2。 那就: 3 ÷ 2, 得到商是1,余数是1。 “将商继续除以2,直到商为0……” 现在商是1,还不是0,所以继续除以2。 那就: 1 ÷ 2, 得到商是0,余数是1 (拿笔纸算一下,1÷2是不是商0余1!) “将商继续除以2,直到商为0……最后将所有余数倒序排列” 好极。现在商已经是0。 我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了。 6转换成二进制,结果是110。 把上面的一段改成用表格来表示,则为: 被除数 计算过程 商 余数 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1 (在计算机中,÷用 / 来表示) 如果是在考试时,我们要画这样表还是有点费时间,所更常见的换算过程是使用下图的连除: 请大家对照图,表,及文字说明,并且自已拿笔计算一遍如何将6转换为二进制数。 说了半天,我们的转换结果对吗。二进制数110是6吗。你已经学会如何将二进制数转换成10进制数了,所以请现在就计算一下110换成10进制是否就是6。 6.3.2 10进制数转换为8、16进制数 非常开心,10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成8。 来看一个例子,如何将十进制数120转换成八进制数。 用表格表示: 被除数 计算过程 商 余数 120 120/8 15 0 15 15/8 1 7 1 1/8 0 1 120转换为8进制,结果为:170。 非常非常开心,10进制数转换成16进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成16。 同样是120,转换成16进制则为: 被除数 计算过程 商 余数 120 120/16 7 8 7 7/16 0 7 120转换为16进制,结果为:78。 6.4 二、十六进制数互相转换 二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。 我们也一样,只要学完这一小节,就能做到。 首先我们来看一个二进制数:1111,它是多少呢。 你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 8,然后依次是 22 = 4,21=2, 20 = 1。 记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。 下面列出四位二进制数 xxxx 所有可能的值(中间略过部分) 仅4位的2进制数 快速计算方法 十进制值 十六进值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E 1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 4 + 0 + 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 10 9 .... 0001 = 0 + 0 + 0 + 1 = 1 1 0000 = 0 + 0 + 0 + 0 = 0 0 二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。 如(上行为二制数,下面为对应的十六进制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢。 先转换F: 看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢。应该是8 + 4 + 2 + 1,所以四位全为1 :1111。 接着转换 D: 看到D,知道它是13,13如何用8421凑呢。应该是:8 + 2 + 1,即:1011。 所以,FD转换为二进制数,为: 1111 1011 由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。 比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数: 被除数 计算过程 商 余数 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 结果16进制为: 0x4D2 然后我们可直接写出0x4D2的二进制形式: 0100 1011 0010。 其中对映关系为: 0100 -- 4 1011 -- D 0010 -- 2 同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。 下面举例一个int类型的二进制数: 01101101 11100101 10101111 00011011 我们按四位一组转换为16进制: 6D E5 AF 1B 6.5 原码、反码、补码 结束了各种进制的转换,我们来谈谈另一个话题:原码、反码、补码。 我们已经知道计算机中,所有数据最终都是使用二进制数表达。 我们也已经学会如何将一个10进制数如何转换为二进制数。 不过,我们仍然没有学习一个负数如何用二进制表达。 比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为: 00000000 00000000 00000000 00000101 5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。 现在想知道,-5在计算机中如何表示。 在计算机中,负数以其正值的补码形式表达。 什么叫补码呢。这得从原码,反码说起。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 00000101 是 5的 原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。 取反操作指:原为1,得0;原为0,得1。(1变0; 0变1) 比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。 称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。 反码是相互的,所以也可称: 11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。 补码:反码加1称为补码。 也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。 比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。 那么,补码为: 11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011 所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。 再举一例,我们来看整数-1在计算机中如何表示。 假设这也是一个int类型,那么: 1、先取1的原码:00000000 00000000 00000000 00000001 2、得反码: 11111111 11111111 11111111 11111110 3、得补码: 11111111 11111111 11111111 11111111 可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。 一切都是纸上说的……说-1在计算机里表达为0xFFFFFF,我能不能亲眼看一看呢。当然可以。利用C++ Builder的调试功能,我们可以看到每个变量的16进制值。

boxti 2019-12-02 01:27:41 0 浏览量 回答数 0

回答

2、8、10、16进制转换方法 生活中其实很多地方的计数方法都多少有点不同进制的影子。 比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。 至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。 生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度…… 我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。 事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。 6.2.5 十六进制数转换成十进制数 2进制,用两个阿拉伯数字:0、1; 8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7; 10进制,用十个阿拉伯数字:0到9; 16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊。 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 假设有一个十六进数 2AF5, 那么如何换算成10进制呢。 用竖式计算: 2AF5换算成10进制: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第2位: A * 16^2 = 2560 第3位: 2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (别忘了,在上面的计算中,A表示10,而F表示15) 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。 假设有人问你,十进数 1234 为什么是 一千二百三十四。你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 6.2.6 十六进制数的表达方法 如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。 C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O) 以下是一些用法示例: int a = 0x100F; int b = 0x70 + a; 至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。 6.2.7 十六进制数在转义符中的使用 转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 '?' 字符,可以有以下表达方式: '?' //直接输入字符 '\77' //用八进制,此时可以省略开头的0 '\0x3F' //用十六进制 同样,这一小节只用于了解。除了空字符用八进制数 '\0' 表示以外,我们很少用后两种方法表示一个字符。 6.3 十进制数转换到二、八、十六进制数 6.3.1 10进制数转换为2进制数 给你一个十进制,比如:6,如果将它转换成二进制数呢。 10进制数转换成二进制数,这是一个连续除2的过程: 把要转换的数,除以2,得到商和余数, 将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。 听起来有些糊涂。我们结合例子来说明。比如要转换6为二进制数。 “把要转换的数,除以2,得到商和余数”。 那么: 要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 (不要告诉我你不会计算6÷3。) “将商继续除以2,直到商为0……” 现在商是3,还不是0,所以继续除以2。 那就: 3 ÷ 2, 得到商是1,余数是1。 “将商继续除以2,直到商为0……” 现在商是1,还不是0,所以继续除以2。 那就: 1 ÷ 2, 得到商是0,余数是1 (拿笔纸算一下,1÷2是不是商0余1!) “将商继续除以2,直到商为0……最后将所有余数倒序排列” 好极。现在商已经是0。 我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了。 6转换成二进制,结果是110。 把上面的一段改成用表格来表示,则为: 被除数 计算过程 商 余数 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1 (在计算机中,÷用 / 来表示) 如果是在考试时,我们要画这样表还是有点费时间,所更常见的换算过程是使用下图的连除: (图:1) 请大家对照图,表,及文字说明,并且自已拿笔计算一遍如何将6转换为二进制数。 说了半天,我们的转换结果对吗。二进制数110是6吗。你已经学会如何将二进制数转换成10进制数了,所以请现在就计算一下110换成10进制是否就是6。 6.3.2 10进制数转换为8、16进制数 非常开心,10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成8。 来看一个例子,如何将十进制数120转换成八进制数。 用表格表示: 被除数 计算过程 商 余数 120 120/8 15 0 15 15/8 1 7 1 1/8 0 1 120转换为8进制,结果为:170。 非常非常开心,10进制数转换成16进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成16。 同样是120,转换成16进制则为: 被除数 计算过程 商 余数 120 120/16 7 8 7 7/16 0 7 120转换为16进制,结果为:78。 请拿笔纸,采用(图:1)的形式,演算上面两个表的过程。 6.4 二、十六进制数互相转换 二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。 我们也一样,只要学完这一小节,就能做到。 首先我们来看一个二进制数:1111,它是多少呢。 你可能还要这样计算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 8,然后依次是 22 = 4,21=2, 20 = 1。 记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。 下面列出四位二进制数 xxxx 所有可能的值(中间略过部分) 仅4位的2进制数 快速计算方法 十进制值 十六进值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E 1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 4 + 0 + 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 10 9 .... 0001 = 0 + 0 + 0 + 1 = 1 1 0000 = 0 + 0 + 0 + 0 = 0 0 二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。 如(上行为二制数,下面为对应的十六进制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢。 先转换F: 看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢。应该是8 + 4 + 2 + 1,所以四位全为1 :1111。 接着转换 D: 看到D,知道它是13,13如何用8421凑呢。应该是:8 + 2 + 1,即:1011。 所以,FD转换为二进制数,为: 1111 1011 由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。 比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数: 被除数 计算过程 商 余数 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 结果16进制为: 0x4D2 然后我们可直接写出0x4D2的二进制形式: 0100 1011 0010。 其中对映关系为: 0100 -- 4 1011 -- D 0010 -- 2 同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。 下面举例一个int类型的二进制数: 01101101 11100101 10101111 00011011 我们按四位一组转换为16进制: 6D E5 AF 1B 6.5 原码、反码、补码 结束了各种进制的转换,我们来谈谈另一个话题:原码、反码、补码。 我们已经知道计算机中,所有数据最终都是使用二进制数表达。 我们也已经学会如何将一个10进制数如何转换为二进制数。 不过,我们仍然没有学习一个负数如何用二进制表达。 比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为: 00000000 00000000 00000000 00000101 5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。 现在想知道,-5在计算机中如何表示。 在计算机中,负数以其正值的补码形式表达。 什么叫补码呢。这得从原码,反码说起。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如00000000 00000000 00000000 00000101 是 5的 原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。 取反操作指:原为1,得0;原为0,得1。(1变0; 0变1) 比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。 称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。 反码是相互的,所以也可称: 11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。 补码:反码加1称为补码。 也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。 比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。 那么,补码为: 11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011 所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。 再举一例,我们来看整数-1在计算机中如何表示。 假设这也是一个int类型,那么: 1、先取1的原码:00000000 00000000 00000000 00000001 2、得反码: 11111111 11111111 11111111 11111110 3、得补码: 11111111 11111111 11111111 11111111 可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。 一切都是纸上说的……说-1在计算机里表达为0xFFFFFF,我能不能亲眼看一看呢。当然可以。利用C++ Builder的调试功能,我们可以看到每个变量的16进制值。

祁同伟 2019-12-02 01:28:37 0 浏览量 回答数 0

回答

百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。         什么是“可打印字符”呢?为什么要用它来传输8Bit字节码呢?在回答这两个问题之前我们有必要来思考一下什么情况下需要使用到Base64?Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、127这33个字符属于控制字符,32~126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。         Base64,就是使用64个可打印字符来表示二进制数据的方法。Base64的索引与对应字符的关系如下表所示: 也就是说,如果将索引转换为对应的二进制数据的话需要至多6个Bit。然而ASCII码需要8个Bit来表示,那么怎么使用6个Bit来表示8个Bit的数据呢?6个Bit当然不能存储8个Bit的数据,但是46个Bit可以存储38个Bit的数据啊!如下表所示: 可以看到“Son”通过Base64编码转换成了“U29u”。这是刚刚好的情况,3个ASCII字符刚好转换成对应的4个Base64字符。但是,当需要转换的字符数不是3的倍数的情况下该怎么办呢?Base64规定,当需要转换的字符不是3的倍数时,一律采用补0的方式凑足3的倍数,具体如下表所示: 每6个Bit为一组,第一组转换后为字符“U”,第二组末尾补4个0转换后为字符“w”。剩下的使用“=”替代。即字符“S”通过Base64编码后为“Uw==”。这就是Base64的编码过程。

问问小秘 2020-04-30 16:51:05 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

问题

linux 二进制文件权限问题:报错 

kun坤 2020-06-04 21:09:32 2 浏览量 回答数 1

回答

一、转换的思路分析:4个2进制位为一个16进制数,2进制1111为16进制F,2进制中千位的1=8,百位的1=4,十位的1=2,个位的1=1,将各个位的数作相应转换再相加,的到的数就是10进制数0-15,可轻松转换成16进制。如01011100,可看成是两组2进制数0101和1100,则这个数就是16进制的5C。   二、例子: 用位加权乘,积相加法比较简单。如8FFC035B转换为十进制(最低位是16^0,依次向左): 1、8FFC035B(16)=8x16^7+Fx16^6+Fx16^5+Cx16^4+0x16^3+3x16^2+5x16^1+Bx16^0 2、=2147483648+15x16^6+15x16^5+12x16^4+0+768+80+11 3、=2147483648+251658240+15728640+786432+768+80+11 4、=2415657819(10)。 三、关于二进制 1、二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 2、20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码。其运算模式正是二进制。19世纪爱尔兰逻辑学家乔治布尔对逻辑命题的思考过程转化为对符号"0''.''1''的某种代数演算,二进制是逢2进位的进位制。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。 -------------------------十六进制由0-9,A-F,组成。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0---(N-1)的数表示超过9的用字母A-F。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 假设有一个十六进数 2AF5 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 也可以用竖式表示: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第2位: A * 16^2 = 2560 第3位: 2 * 16^3 = 8192 ------------------------------------- 10997 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。 假设有人问你,十进数 1234 为什么是 一千二百三十四。你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0

马铭芳 2019-12-02 01:28:16 0 浏览量 回答数 0

问题

linux 二进制文件权限问题 - linux报错

montos 2020-06-04 21:15:03 3 浏览量 回答数 1

回答

因为那个文件本来就是gbk编码格式的######回复 @lemondwm : 是什么文件?如果是文本文件你用txt打开看下,然后用另存为的方式保存为utf8格式的######但是用GBK拿到的是乱码呀~~~~###### InputStreamReader reader = new InputStreamReader(new FileInputStream("\test.txt"), "GBK"); BufferedReader bufferedReader = new BufferedReader(reader); String str; while ((str = bufferedReader.readLine()) != null) { System.out.println(str); } 读取文件时指定编码试试 ######谢谢,楼下详解懂了###### 不论什么数据,存储上(无论是磁盘,还是内存),本质上都可以看成二进制的字节数组。而字符流的字符编码,是把二进制数据和字符进行的双向映射。 Java内部char类型整形值表示,你可以看成一个固定的字符编码(unicode,简单点可以理解成UTF16,实际还有代码点等问题,这部分建议阅读下Core Java2的相关章节)。 UTF8编码的文件,以GBK的方式读入Java进程,可以理解为,把文件的二进制流按GBK解码为对应的字符(这时候会出现乱码),再按Java的内部编码转换为对应的char[]。输出也是把这个过程反过来。 如果一个二进制数据,使用同一个字符编码解码,编码这两个操作是可逆的。最终,GBK读再GBK写,当然会还原回去(然后你再用外部工具按UTF8)。但要注意一个特殊情况,对于一个字符编码,并不是所有的二进制内容都是合法的,如果在解码的时候发生无法解码的情况,这时候数据可能会出现损坏丢失。 ######谢谢,懂了( ̄∀ ̄)###### java的编码我认为是有3种。 1.文件编码。这里的文件只是单只文件而已。 2.流编码。就是你的IO设置的编码。 3.内容编码。这里是你写入的内容的编码。 这3个编码,缺一不可,只要某一项不一致,读出来都会乱码。

kun坤 2020-06-07 20:24:38 0 浏览量 回答数 0

问题

Python的C扩展 argument 1 must be string without null bytes, not str

a123456678 2019-12-01 19:49:55 1426 浏览量 回答数 1

回答

顶起来,大侠们都来帮帮我呗 复制去Google翻译 翻译结果 ###### 这个无解啊。。。 ###### 引用来自“红薯”的答案 这个无解啊。。。 那是为什么? Notepad++这个编辑器它读取UTF8的还是GBK的文本文件都没问题 中文都不会是乱码啊 这是怎么做到的? ######这个软件时开源的,如果要研究你可以去看代码。但其判断的结果肯定也不是100%准确的。###### 看看这两个: http://www.cnblogs.com/powertoolsteam/archive/2010/09/20/1831638.html http://bbs.csdn.net/topics/90422580 然后试试二进制读文件的效果,看能不能使用这些方法 ###### 文件本身只是二进制内容,怎么存存什么都是个人决定的,所以 如果文件本身不提供除内容外的其它类型和编码的信息,没有简单的办法判断。 所以才会有不同的不兼容的文件格式,如果软件要支持某种格式,必须事先知道某种文件格式怎么定义的。 就普通的文本文件,只能根据不同编码的特点去猜,但由于各种编码也没有唯一的不同点,所以几乎实现不了。 比如先假定文件是UTF-8编码,按UTF-8去读取,看看是否有无法解析的字符,然后再按UTF-16去读取,是否有FEFF的大端小端指示字节对,如果没有再按UTF-16BE或UTF-16LE去读取看看有没有不正常的字符,然后再按GBK去读,或者其它编码格式去读。 但目前各国的编码太多了,如果全部考虑,更是难实现,这得编码专家去弄了,得学太多东西。  ######大概明白了怎么回事了 谢谢######我记得原来有个想了个笨方法。就是编码不同,二进制的前几未是不一样的。不知道是不是。好像有几位固定的######http://bbs.csdn.net/topics/230061632######按照二进制读取然后对比######谢谢 我试试######拿到一定长度的 字节流 然后判断含有哪些 byte 就知道是什么东西了###### 如果是文本文件,先尝试读前两个字节,看是否是BOM,windows下有的可能性不低。 如果没有,那的确没有保证的法子了。浏览器对待没指定编码的网页的做法通常是根据内容用不同编码格式来猜可能性最高的,但不能保证正确。

kun坤 2020-06-07 16:40:52 0 浏览量 回答数 0

回答

一个函数的调用开销抵得上上千个CPU指令周期!! 我们写普通应用时应该以可读性为主,仅在必要的时候才进行性能优化。但这种非常low-level的代码必须严格对待效率问题。所以这个问题用宏来实现是最好的方式。 相比if语句,用宏+查表法实现可能第一次执行会比if语句慢,因为要把整张表加载到高速缓存,但之后的每一次调用都将比if语句快,更比函数方式快N倍。 补充回答 首先,“查表查表”,指的是什么样的一张表呢?是这么一张表: static const short ctype_tab[257] = { 0, / EOF / _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _CN, _CN, _CN, _CN, _CN, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB, _SP, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU, XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI, _PU, _PU, _PU, _PU, _PU, _PU, _PU, XUP, XUP, XUP, XUP, XUP, XUP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP, _PU, _PU, _PU, _PU, _PU, _PU, XLO, XLO, XLO, XLO, XLO, XLO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO, _PU, _PU, _PU, _PU, _BB, };此数组长度257,实际只初始化了前面129个元素。但是实际用来判断的_Ctype是截取了该数组的后面256个元素: const short *_Ctype = &ctype_tab[1];忽略掉那个EOF的0,注意看上面的128个元素。这实际上是对整个ASCII表进行了归类。比如_LO表示小写字母,_UP表示大写字母,_DI表示数字,这些宏常量都已经在前面定义了的。注意对于数字,他并不是用的_DI,而是XDI,这代表这些数字同时代表十进制数字+十六进制数字,同理,字母中的A-F和a-f也不是_UP或_LO而是XUP和XLO,表示它们即是字母又是十六进制数字。 这样分类之后,它又是怎么判断一个字符的属性的呢?主要的技巧是每个类别的常量之间是互斥的,把它们的值转成二进制以后,每个常量的1的位置是不同的。例如_LO的值是0x10,二进制是1 0000,1在右数第五位,而其他的几个常量中的1全部与它不同,不信你可以自己验证一下(几个组合常量除外)。 实际上,它是从_XD(代表十六进制数字的常量)到_XA(代表编码超过128的那些ASCII超集字符),每个常量都是前一个的2倍。2倍在二进制中相当于把1向左挪动了一位,这样每一个常量中的1就错开了。 这种技巧在编程中有一个专门的名字:掩码,英文名字是Mask,它除了可以判断一个值是不是某个我期望的值之外,还能很容易地进行组合判断。比如g是小写字母,而a不仅是小写字母,还是一个十六进制数字。 判断的时候,只要把实际值与预先定义的掩码进行与操作,然后判断结果是否不为0即可。 例如,你拿到一个小写字母g,它在该表中对应的值是_LO即0x10,二进制为1 0000,(请自行对照着ASCII码表来看),此时把它与_LO相与,即10000 & 10000,由于第五位都是1,所以结果不为0,表示它是一个小写字母。 如果你拿到的不是一个小写字母,例如是大写字母G,它在该表中对应的值是_UP即0x02(二进制10),此时把它与_LO相与,即10 & 10000,结果为0,表示它不是一个小写字母。其他同理。 如果你拿到一个具有组合属性的字符,例如a,它在表中对应的值是XLO,这是一个由_XD和_LO进行或操作得到的组合值,即10 | 10000,得到的结果为10010,也就是十六进制的0x12。多个掩码之间进行或操作就相当于为它们赋予了多重属性,因为它们的二进制上有多个位置同时为1,这样它们就可以在多种判断中返回不为0的结果。以a为例,它与_LO进行与操作时结果不为0,表示它是一个小写字母,同时它与_XD进行与操作时结果也不为0,因此它也是一个十六进制数字。 基本原理就是这样。掩码其实很常见,比如对IP地址的网段的判断(子网掩码)、Windows的GDI编程中为画刷设置属性、某些系统中对角色权限的判断,等等。 最后,对于你的为什么要使用十六进制来定义的疑惑,实际上是为了清晰,一看就知道这些定义的是掩码。如果用二进制则太长,用十进制则不够直观(别忘了我们是程序员,天生对十六进制更加敏感)。

a123456678 2019-12-02 02:41:25 0 浏览量 回答数 0

回答

通用情况下,没有什么好办法能把python编译成dll,因为python是解释型语言,dll是编译后的二进制文件,2者不在一个次元。除非你把python的解释器也打包进你的工程,并在你的exe里调用。但某些特殊情况下,也有把python的代码编译成dll文件的方法,在.net环境下,可以用IronPython这个工具,它可以把python代码编译成dll。

半指温柔乐 2019-12-02 01:08:57 0 浏览量 回答数 0

回答

摘抄:因为java读取read()方法时候,底层由c++实现,返回的是 unsigned byte ,取值范围为[0,255],而byte的取值范围是[-128,127], 那么[128, 255]就没有办法表示了,然后就会把byte升级为int,int就可以表示[128,255], 不过为什么不用short去接受返回呢???菜鸟求解######回复 @快乐的一只小青蛙 : 糊涂之言,勿怪!!######回复 @kakai : short是C语言的基本类型之一。 C语言整形数据包括char、short、int、long######Java没有unsigned###### 对于你问题的具体回答 [详细描述]###### 哪儿矛盾了,返回的int值表示读取的字节数,并不是读取到的字节######可是,调用 public abstract int read() throws IOException,返回的是 0 到 255 范围内的 int 字节值。###### 摘要 调用 read(), 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。 调用 read(byte[] b), 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。 1.    的确,public abstract int read()                                   throws IOException 输入流中读取数据的下一个字节。但是,返回的是 0 到 255 范围内的 int 字节值。一个字节能表示的最大的整数就是255(二进制11111111=十进制255)。所以,返回值的类型是 int。"read()的底层是由C++实现的,返回的是unsigned byte,取值范围为[0~255],在java中没有对应的类型,所以只能用int类型接收"。 中文字符,(至少)需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。java 字符型变量,使用 UNICODE。UNICODE 通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。比如,一个中文字符 '中', 对应的 Unicode 十进制编码是: 20013。于是,要读取 '中',就必须连续读入两个字节。按 UNICODE 编码,才能够将这两个二进制字节值"合成",将"合成"结果,成功转换成相应的中文字符。 如下代码,详述通过 java 使用的 Unicode 编码 读取 中文字符的案例。 这里,通过建立一个 BigInteger 对象,获得 长度为2的字节数组 byte bete[]。分别检查这两个字节的二进制表示, 即输出 每个字节元素的字节值,及其二进制表示。从输出结果可以看出,将两个(整型)字节值 78( 二进制:01001110)   和 45( 二进制:00101101) 的二进制表示,“合成” 到一起,就是 字符'中' 的Unicode编码 20013, 即 0100111000101101(二进制) 。  import java.math.BigInteger; public class ByteArray1 { public static void main(String[] args) { int zhong = (int)'中'; System.out.println( "字符 '"+ (char)zhong + "',其 UNICODE: " + zhong + "(十进制)"); // 通过建立一个 BigInteger 对象,获得 长度为2的字节数组 byte bete[]。 BigInteger b = new BigInteger(String.valueOf(zhong)); String zh = b.toString(2); System.out.println( addZero(zh, 16) + "(二进制)" ); // 输出字符 '中' 的 二进制的字符串形式 byte bete[] = b.toByteArray();//返回一个 byte 数组,该数组包含此 BigInteger 的二进制补码表示形式。 for (int j=0; j<bete.length ; j++){ byte bn = bete[j]; String str = Integer.toBinaryString(bn); System.out.println( bn + "( 二进制: " + addZero(str, 8) + ")"); // 输出 每个字节元素的字节值的二进制表示 } } /* 将一个 整型 (16位) 或 字节(8位) 转化成 二进制表示的字符串时, * 若字符串长度不足 16位 或 8位 时,将空位补 0。 */ static String addZero(String s, int length){ String add=""; for(int k=0; k< ( length - s.length()); k++) add += "0"; return add + s; } } 输出: 字符 '中',其 UNICODE: 20013(十进制) 0100111000101101(二进制) 78( 二进制: 01001110) 45( 二进制: 00101101) 2.     如果调用 方法  public int read(byte[] b)          throws IOException 其功能是:"从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数"。注意,这时读取到的输入流的每个字节的值,依次存入缓冲区数组 b 的各个元素之中。 结论: 调用 read(), 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。调用 read(byte[] b), 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。在字节流的基础上,加上编码,形成的数据流。字符流虽然以字节流为基础创建的,但是字节流可以支持声音,视频,图片,文本等所有文件类型,而字符流只支持文本文件。ASCII码:美国信息交换标准代码。单字节编码,不支持中文。Unicode/utf-8  :双字节编码,支持中文(万国码)。java 使用 Unicode。    参考: Java:InputStream中的read()返回int类型的疑问Java I/O(字节流、字符流与转换流)Java中字符流与字节流的区别###### 引用来自“yong230”的评论 哪儿矛盾了,返回的int值表示读取的字节数,并不是读取到的字节 我也这样认为######如果调用 方法 public int read(byte[] b) throws IOException 其功能是:从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。注意,读取到的输入流的每个字节值,依次存入缓冲区数组 b 的各个元素之中。调用 read(), 返回字节的值。###### 还有这么多人,居然方法的功能都不知道,, read和read(byte[])的功能都不同,

kun坤 2020-06-07 20:03:19 0 浏览量 回答数 0

回答

我用FlashFXP 上传的过程中看到右下角有上传失败的提示,(只是部分文件提示上传失败)~整个网站全部传完后,在左下角的窗口内也没有显示打叉的文件~我的空间剩余空间足够~那些失败的文件是什么呢,,由于它跳得太快,我也找不到那失败的是什么文件了,怎么找呢???请大家帮我解决下~两个问题:1.为什么会出现这样情况?2.怎么查找那失败的文件? 一、设置为 2进制 二、检查一下是否是0KB的文件,有些没有内容的文件是上传不成功的但可以正常使用,还有,有可能是文件类型不对或者过大,空间不支持。 1 可以试试重新连接后,上传 2 失败的文件一般左下角都有叉 没有的话就是斗上传成功了 断开再续传~~ 设置为二进制传输 来源于网络,供您参考

保持可爱mmm 2019-12-02 02:20:14 0 浏览量 回答数 0

回答

如果可以分开存储的话我希望还是分开,也就是身份证文字信息+头像的做法,如果非要存身份证扫描复印照的全图的话,可以做桥接,图片存放在存储,只存图片,在图片服务器做单一入口,并分配权限,还可以做些文件加密什么的操作,这样分散开个人觉得安全性更高些,不至于脱库后连这些私密信息都跟着完蛋,还有,感觉用DB存这种大量的二进制挺坑的,而且是越来越坑,你要考虑数据库有可能经常崩溃,而单纯的文件系统会更稳定

落地花开啦 2019-12-02 01:41:29 0 浏览量 回答数 0

问题

mina项目寻求帮助? 400 报错

爱吃鱼的程序员 2020-05-30 22:01:31 0 浏览量 回答数 1

问题

mvn install后为何还需要package,而之后为何又要tar解压缩呢?

杨冬芳 2019-12-01 20:26:43 1097 浏览量 回答数 1

回答

用yum安装下驱动就行了 将64位的fedora后,如果想安装一些32位的软件,是可以指定的按照安装介质下载是有完整DVD版本的。 什么网卡会没有内核驱动?还必须使用老旧的tarball或二进制模块来加载? 一般来说,3.8,3.9的内核,不支持的硬件(网络和存储)不太多了,直接用64位模块驱动你的硬件就可以了。 至于你的程序是32位的,解决办法上面已经有人提过了,安装相关联的32位动态库即可。

爱吃鱼的程序员 2020-06-22 19:22:36 0 浏览量 回答数 0

回答

看你这命令不像是编译安装啊,也是二进制包 @leo108这样是吧,那我先编译安装好吧,然后再用rpm试试吧!不过用这个编译安装总报错说“找不到boost”,有什么解决方法吗?网上搜来搜也没个管用的。。。回复 @Koma:如果是按你刚刚这个方式,还是直接用rpm更简单,效果是一样的。如果想要自定开启、关闭一些功能之类的还是用编译安装 @leo108恩,就是刚开始看着官方那个文档安装嘛,然后总是报那个错误。。。后面我就重新来,就是按你说的这种方式!我想问问你啊,就是使用这个rpm包安装的话跟你说的这种方式有个什么区别?那个会好些?回复 @Koma:mysql编译安装一般都是cmake,之后make&&makeinstall是下载的源码包,然后手动去安装,这样不是编译安装?这个我也不熟,你们通常是用怎么安装的?直接下官网的RHEL版本的rpm包来装就好了,自动的是准备进行编译安装的,用rpm包不是跟使用yum安装一样的? yuminstall-ymysqlmysql-server servicemysqldstart chkconfigmysqldon mysqladmin-urootpassword"新密码" 安装完毕!O(∩_∩)O哈哈~好家伙~ 编译型安装可以最灵活的方式安装自己的软件,但是同时也会让安装无限复杂化。特别是很多编译需要很多额外的配置和第三方库,甚至因为你发行版的不同很多配置也不一样。 已经做好了的发行版二进制包就容易了,基本上直接解压缩或者一键安装就可以使用。恩,那确实,我编译安装过很多次,每次都会出现一个新的问题,不过都是些缺少这个那个包之类的,或者是这个那个包的版本不兼容之类的。。。。挺麻烦的。。。。

爱吃鱼的程序员 2020-06-14 20:20:08 0 浏览量 回答数 0

回答

应该是邮件的头文件,估计保存了一些邮件发送接收服务器之间相联系的加密信息.密钥什么的.###### 引用来自“梦无涯”的答案 应该是邮件的头文件,估计保存了一些邮件发送接收服务器之间相联系的加密信息.密钥什么的. 我猜也是,对了请问你有一个附件读取成二进制后发送的的经验么? ###### 引用来自“养不胖”的答案 引用来自“梦无涯”的答案 应该是邮件的头文件,估计保存了一些邮件发送接收服务器之间相联系的加密信息.密钥什么的. 我猜也是,对了请问你有一个附件读取成二进制后发送的的经验么? 你是想发送附件?我是用的common-email 组件,有做封装的,你有兴趣的话,可以看下它的源码吧.如果只是想实现功能的话,其实很简单的: /** * 发送邮件,包含多个附件,发件人等配置信息在email.properties中配置 * @param addr 收件人地址 * @param subject 邮件主题 * @param content 邮件内容 * @param paths 多个附件地址 */ public static void sendEmail(String addr,String subject,String content,String[] paths) { Pattern p = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); if(StringUtils.isBlank(addr) || !p.matcher(addr).matches()) { throw new IllegalArgumentException("the addr is not a legal email addrs:" + addr); } Map<String,String> map = EmailUtils.loadEmailConfig(); HtmlEmail email = new HtmlEmail(); try { email.setHostName(map.get("email.hostname")); email.setCharset(map.get("email.charset")); email.addTo(addr); email.setFrom(map.get("email.sender")); email.setAuthentication(map.get("email.auth.user"), map.get("email.auth.pwd")); email.setSubject(subject); email.setHtmlMsg(content); /** * 添加附件 */ for(EmailAttachment att : getAttachs(paths)) { email.attach(att); } email.send(); } catch (EmailException e) { e.printStackTrace(); } } private static List<EmailAttachment> getAttachs(String[]paths) { List<EmailAttachment> attachs = new ArrayList<EmailAttachment>(); if(paths != null) { for(String path : paths) { EmailAttachment attach = new EmailAttachment(); //解决附件的中文名称 乱码问题 */  String encoding = System.getProperty("file.encoding"); sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); String[] str = path.split("\\\\"); String title = str[str.length-1]; attach.setName("=?"+encoding+"?B?"+enc.encode(title.getBytes())+"?="); attach.setPath(path); attachs.add(attach); } } return attachs; } ######这是JavaMail的版本: http://chengyue2007.iteye.com/blog/787151###### @梦无涯 不行,我要的不是这种效果。 我的意思是。我发送一封邮件的时候附件是*.doc或者别的文件。 然后我用二进制读取之后传一个byte数组到发送邮件的地方。 我发送的邮件中附件是有,但是附件中全部是乱码。 ######不太明白,你是想要读取邮件的附件么?###### @梦无涯 不是的,先读取一个文件为二进制。 然后把读到的二进制数组传到发送邮件的方法。最后发送出去。 并不是读邮件的附件。这个图片是我在附件里面打开时候显示的乱码。也就是附件的内容是乱码。 ######如果只是乱码问题,应该可以着手解决一下,程序转换一下编码格式什么的,应该可以解决吧.######乱码的话,参考下这边的解决方案吧.  http://bbs.csdn.net/topics/110144296###### @梦无涯 这些都试过了。不行的。

kun坤 2020-06-14 10:53:22 0 浏览量 回答数 0

问题

dubbo 支持的通信协议?有哪些序列化协议?说下 Hessian 的数据结构?【Java问答】48

剑曼红尘 2020-07-01 15:18:43 7 浏览量 回答数 1

回答

相信对于很多Java开发来说,在刚刚接触Java语言的时候,就听说过Java是一门跨平台的语言,Java是平台无关性的,这也是Java语言可以迅速崛起并风光无限的一个重要原因。那么,到底什么是平台无关性?Java又是如何实现平台无关性的呢?本文就来简单介绍一下。 什么是平台无关性 平台无关性就是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行(Write Once ,Run Anywhere)。 也就是说,用Java创建的可执行二进制程序,能够不加改变的运行于多个平台。 平台无关性好处 作为一门平台无关性语言,无论是在自身发展,还是对开发者的友好度上都是很突出的。 因为其平台无关性,所以Java程序可以运行在各种各样的设备上,尤其是一些嵌入式设备,如打印机、扫描仪、传真机等。随着5G时代的来临,也会有更多的终端接入网络,相信平台无关性的Java也能做出一些贡献。 对于Java开发者来说,Java减少了开发和部署到多个平台的成本和时间。真正的做到一次编译,到处运行。 平台无关性的实现 对于Java的平台无关性的支持,就像对安全性和网络移动性的支持一样,是分布在整个Java体系结构中的。其中扮演者重要的角色的有Java语言规范、Class文件、Java虚拟机(JVM)等。 编译原理基础 讲到Java语言规范、Class文件、Java虚拟机就不得不提Java到底是是如何运行起来的。 我们在Java代码的编译与反编译那些事儿中介绍过,在计算机世界中,计算机只认识0和1,所以,真正被计算机执行的其实是由0和1组成的二进制文件。 但是,我们日常开发使用的C、C++、Java、Python等都属于高级语言,而非二进制语言。所以,想要让计算机认识我们写出来的Java代码,那就需要把他"翻译"成由0和1组成的二进制文件。这个过程就叫做编译。负责这一过程的处理的工具叫做编译器。 在深入分析Java的编译原理中我们介绍过,在Java平台中,想要把Java文件,编译成二进制文件,需要经过两步编译,前端编译和后端编译: 前端编译主要指与源语言有关但与目标机无关的部分。Java中,我们所熟知的javac的编译就是前端编译。除了这种以外,我们使用的很多IDE,如eclipse,idea等,都内置了前端编译器。主要功能就是把.java代码转换成.class代码。 这里提到的.class代码,其实就是Class文件。 后端编译主要是将中间代码再翻译成机器语言。Java中,这一步骤就是Java虚拟机来执行的。 所以,我们说的,Java的平台无关性实现主要作用于以上阶段。如下图所示: 我们从后往前介绍一下这三位主演:Java虚拟机、Class文件、Java语言规范 Java虚拟机 所谓平台无关性,就是说要能够做到可以在多个平台上都能无缝对接。但是,对于不同的平台,硬件和操作系统肯定都是不一样的。 对于不同的硬件和操作系统,最主要的区别就是指令不同。比如同样执行a+b,A操作系统对应的二进制指令可能是10001000,而B操作系统对应的指令可能是11101110。那么,想要做到跨平台,最重要的就是可以根据对应的硬件和操作系统生成对应的二进制指令。 而这一工作,主要由我们的Java虚拟机完成。虽然Java语言是平台无关的,但是JVM确实平台有关的,不同的操作系统上面要安装对应的JVM。 上图是Oracle官网下载JDK的指引,不同的操作系统需要下载对应的Java虚拟机。 有了Java虚拟机,想要执行a+b操作,A操作系统上面的虚拟机就会把指令翻译成10001000,B操作系统上面的虚拟机就会把指令翻译成11101110。 ps:图中的Class文件中内容为mock内容 所以,Java之所以可以做到跨平台,是因为Java虚拟机充当了桥梁。他扮演了运行时Java程序与其下的硬件和操作系统之间的缓冲角色。 字节码 各种不同的平台的虚拟机都使用统一的程序存储格式——字节码(ByteCode)是构成平台无关性的另一个基石。Java虚拟机只与由字节码组成的Class文件进行交互。 我们说Java语言可以Write Once ,Run Anywhere。这里的Write其实指的就是生成Class文件的过程。 因为Java Class文件可以在任何平台创建,也可以被任何平台的Java虚拟机装载并执行,所以才有了Java的平台无关性。 Java语言规范 已经有了统一的Class文件,以及可以在不同平台上将Class文件翻译成对应的二进制文件的Java虚拟机,Java就可以彻底实现跨平台了吗? 其实并不是的,Java语言在跨平台方面也是做了一些努力的,这些努力被定义在Java语言规范中。 比如,Java中基本数据类型的值域和行为都是由其自己定义的。而C/C++中,基本数据类型是由它的占位宽度决定的,占位宽度则是由所在平台决定的。所以,在不同的平台中,对于同一个C++程序的编译结果会出现不同的行为。 举一个简单的例子,对于int类型,在Java中,int占4个字节,这是固定的。 但是在C++中却不是固定的了。在16位计算机上,int类型的长度可能为两字节;在32位计算机上,可能为4字节;当64位计算机流行起来后,int类型的长度可能会达到8字节。(这里说的都是可能哦!) 通过保证基本数据类型在所有平台的一致性,Java语言为平台无关性提供强了有力的支持。 小结 对于Java的平台无关性的支持是分布在整个Java体系结构中的。其中扮演着重要角色的有Java语言规范、Class文件、Java虚拟机等。 Java语言规范 通过规定Java语言中基本数据类型的取值范围和行为 Class文件 所有Java文件要编译成统一的Class文件 Java虚拟机 通过Java虚拟机将Class文件转成对应平台的二进制文件等 Java的平台无关性是建立在Java虚拟机的平台有关性基础之上的,是因为Java虚拟机屏蔽了底层操作系统和硬件的差异。 语言无关性 其实,Java的无关性不仅仅体现在平台无关性上面,向外扩展一下,Java还具有语言无关性。 前面我们提到过。JVM其实并不是和Java文件进行交互的,而是和Class文件,也就是说,其实JVM运行的时候,并不依赖于Java语言。 时至今日,商业机构和开源机构已经在Java语言之外发展出一大批可以在JVM上运行的语言了,如Groovy、Scala、Jython等。之所以可以支持,就是因为这些语言也可以被编译成字节码(Class文件)。而虚拟机并不关心字节码是有哪种语言编译而来的。详见牛逼了,教你用九种语言在JVM上输出HelloWorld 参考资料 《深入理解Java虚拟机(第二版)》 《深入Java虚拟机》 《Java语言规范——基于Java SE 8》 《Java虚拟机规范第8版》

montos 2020-06-01 15:54:00 0 浏览量 回答数 0

回答

当然,这是一个有趣的问题,但是如果您希望支持较大的n值(例如您提到的10 8),那么我认为解决方案超出了简单答案的范围。数字2 10 8需要10 8 +1(100,000,001)位或大约12 MB的内存才能存储在binary中。用十进制表示,大约有3000万个数字。 您int的位宽为32位,这就是为什么带符号的int不能存储2 31的原因 –第32位是符号,而2 31的二进制值为1,后跟31个零,因此需要32位无符号。因此它溢出并被解释为负数。(技术上签名的整数溢出是C中未定义的行为。) 您可以切换到,unsigned int以消除符号和不确定的行为,在这种情况下,新的最高支持n将为31。几乎可以肯定,您可以使用64位整数,甚至128位整数,但是2 127仍然是小于2 亿。 因此,您需要找到一种算法来计算2的幂的小数位数而不实际存储它们(仅存储和),或者忘记尝试在标准C中使用任何标量类型并获取(或实现)任意在数组(位,十进制数字或二进制编码的十进制数字)上运行的精密数学库。另外,您也可以将解决方案限制为,uint64_t但是,您的n <64,就不那么有趣了……=)

kun坤 2019-12-02 03:23:53 0 浏览量 回答数 0

回答

1个 当然,这是一个有趣的问题,但是如果您希望支持较大的n值(例如您提到的10 8),那么我认为解决方案超出了简单答案的范围。数字2 10 8需要10 8 +1(100,000,001)位或大约12 MB的内存才能存储在binary中。用十进制表示,大约有3000万个数字。 您int的位宽为32位,这就是为什么带符号的int不能存储2 31的原因 –第32位是符号,而2 31的二进制值为1,后跟31个零,因此需要32位无符号。因此它溢出并被解释为负数。(技术上签名的整数溢出是C中未定义的行为。) 您可以切换到,unsigned int以消除符号和不确定的行为,在这种情况下,新的最高支持n将为31。几乎可以肯定,您可以使用64位整数,甚至128位整数,但是2 127仍然是小于2 亿。 因此,您需要找到一种算法来计算2的幂的小数位数而不实际存储它们(仅存储和),或者忘记尝试在标准C中使用任何标量类型并获取(或实现)任意在数组(位,十进制数字或二进制编码的十进制数字)上运行的精密数学库。另外,您也可以将解决方案限制为,uint64_t但是,您的n <64,就不那么有趣了……=)

kun坤 2019-12-02 03:23:49 0 浏览量 回答数 0

回答

Mysql8是一个巨大的性能提升,对于二进制uuid做为主键有史诗级别的加强,牛逼大发了。######回复 @错觉 : ��,性能不输int整数,吊的不行。######二级制做主键 疯了吗######还不如直接用 postgresql ,更直接一些###### 可以更详细的对比下###### mysql8还真没研究过,性能提升真这么大的话是可以研究下###### 以上内容说和nosql存储方式就扯淡了######赞同######索引是个好东西######nosql 也得加索引啊###### nosql不是万能的,再说nosql太多了######速度相差这么大?看来需要升级了###### 对比虽然很简单,但是这么一说倒是可以去看看MySQL8 ,但是为什么要用数据库直接存放点赞,用缓存啊######是的,我也觉得,这个点是设计有问题。###### 到现在网上也没有怎么使用mysql8的NOSQL功能,好像是要收费的版本才能用?######你百度肯定不行,去官网看###### 但是楼主这种测试,明显有问题。######和 PostgreSQL 来个对比吧,哈哈哈

kun坤 2020-06-08 11:20:20 0 浏览量 回答数 0

回答

你这实际上是三个问题,从WebService到今天流行的RESTful API(JSON) over HTTP,经历了数次变革1 WebService有很多协议,为什么HTTP比较流行?WebService是个很重型的规范,它的应用协议是SOAP(简单对象访问协议),它所依赖的下层通信方式不单单是HTTP,也有SOAP over SMTP, SOAP over TCP,由于HTTP协议群众基础广,开发调试方便,所以,成了WebService中最为流行的方式。甚至很多公司在内网通信,也用HTTP来做,比如,应用调用搜索引擎,Solr就是一个例子。但HTTP也是TCP上性能比较差的协议,因为HTTP是基于TCP的,有3次握手,再加上HTTP是个文本传输协议(虽然也可以传二进制的附件,但业务逻辑还是文本用的多),又有很多复杂的HEADER。所以人们发明了一些更高效的通信协议来做远程调用,比如ACE、ICE、Corba、淘宝的HSF,但这是后话了,不展开细说。你只要知道,HTTP之所以流行,乃是简单易用群众基础广的结果。2 WebService为什么不如RESTful API流行WebService诞生十几年了,最初是IBM、微软比较热心在推,一直也不温不火。倒是XML-RPC, RESTful以及比RESTful还要简陋的远程调用方式后来居上。感觉是不是有点像民间的Spring干掉官方的EJB?究其原因,还是WebService实在太笨重了,SOAP信封犹如婆娘的裹脚布,又臭又长,广大开发人员是叔可忍嫂不能忍,于是就有了简化版的,叫XML-RPC,后来伴随着Web2.0流行,RESTful独领风骚。我在10年前做过一个产品,纯PHP+JS,标准的WebService,连WSDL我都要专门写个PHP程序来生成,还好只是我一个人开发,要是团队协作,我早就被骂得不成人形了。再后来,连RESTful都被嫌弃了,大伙儿干脆连PUT、DELETE都懒得用,直接用GET和POST。同时,我得说,这只是在互联网领域,大部分企业的业务逻辑相对简单,同时工期又变态的短(就像大部分互联网创业公司用糙快猛的PHP,而不用相对严谨的Java一样)。在某些业务复杂,稳定性和正确性要求高的领域(如ERP、电商、支付),WebService还有是用武之地的。3 为什么JSON比XML流行还是易用性,JSON的可读性比XML强几条长安街,解析规则也简单许多。XML解析的时候规则太多了,动不动就非法字符,动不动就抛异常。这对追求高开发速度和低开发门槛的企业来说,是个致命伤。JSON的缺点是数据类型支持较少,且不精确。比方说:price:12580在json里,你无法知道这个价格是int, float还是double。所以,如上面第二条所述,在一些业务要求较高的领域,还是XML更合适。最后说一下性能,JSON的性能高于XML,除此之外,基于XML和HTTP的WebService, 基于JSON的RESTful API,并没有性能差异。XML性能糟糕到什么地步呢,有一种专门的CPU叫做XML Accelerator,专门为XML解析提供硬件加速。

蛮大人123 2019-12-02 01:55:29 0 浏览量 回答数 0

回答

任何能读二进制的语言都可######我知道大概所有语言都可以进行IO操作,可是如果自己写IO不觉得很麻烦吗。我意思是有没有什么技术可以进行结构化的读取, 谢谢!###### 我听说过PDF.js http://blog.163.com/hongshaoguoguo@126/blog/static/1804698120135300348446/ ######感谢!######这个问题真是问出了水平。。######回复 @keepgoing_ : github里面应该有现成的源码。我可能搞错了,你说的是结构化读取,我看成了io读取了,没有其他的意思######看来这位朋友大牛,不过你冷嘲热讽我可不服你,不如拿出点干货。我问的是结构化读取,拿出个方案来,让我崇拜下。######只要有文件解析器就可以,一个自己写,一个用别人完成开源的。 Github 搜索 pdf 即可

kun坤 2020-06-06 22:39:27 0 浏览量 回答数 0

回答

java.io.Reader 和 java.io.InputStream 组成了Java 输入类。Reader 用于读入16位字符,也就是Unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。 Reader支持16位的Unicode字符输出,InputStream支持8位的字符输出。 Reader和InputStream分别是I/O库提供的两套平行独立的等级机构, ###### 1. 有 1000w 的数据,我的话用缓存了,例如 Redis,Memcached,是不是用 HashMap 或者 HashTable 都是找抽型? 2. InputStream 是针对二进制读取,即针对字节,Reader 是针对字符读取(例如有的一个字符实际站占用的是 3 个字节,但是对 Reader 的接口来说,只是一个字符) ######最他妈反感提了问题不给答案的面试官,装高深,其实这些玩意起先不懂都没关系,上网一查就懂了,面试的人怕的不是他了解得不够,而是不肯学######直接问你 HashTable 和Hashmap 又啥区别就是了嘛  绕一大圈。。真够装的~~######那HashTable真的可以避免大量的Key碰撞吗?######大量数据保存这个有没说是单线程环境下还是多线程环境下的呢?多线程环境下, HashTable确实是好的选择,因为其同步。单线程环境下的话,明显要选HashMap吧,并且单线程环境下会存在碰撞吗?这个我就没仔细研究过。###### 1 、HashMap对于大数据量的rehash等操作可能导致CPU过高,性能降低。HashTable散列算法比hashmap简单,但是线程安全。但是两个对大数据都没有什么优势。 2、字节和字符 ######面试官估计也是个半吊子。hashmap采用的是线性表加链表进行数据存储,虽然 hashcode可能会碰撞,但只要保证key的equals方法不误判就没有问题了。第二个问题reader是字符读取,它在底层持有一个Inputstream,通过缓存InputStream读取的字节数据并将字节进行编码以字符流的形式返回给你。###### 要求保存到 HashMap(不是Map?),面试官的答案却又是Hashtable。 ######嗯,是的 给我的感觉是,他挖了一个坑,想知道我是否知道能把它处理掉######一语道破天机######我也是这个感觉,就像面试官问,你上厕所是有左手还是用右用擦屁股,结果他的答案是用纸。。。###### hashtable可以避免 Key 大量碰撞的问题 不是###### 数据里有相同的key,那么碰撞就是客观存在的。 避免碰撞就使用key可以重复的容器, 大数据量可以使用MongoDB等

kun坤 2020-06-07 21:48:13 0 浏览量 回答数 0

问题

ECS 实例子网划分和掩码表示方法是什么

boxti 2019-12-01 21:50:28 1777 浏览量 回答数 0

回答

1、花指令的插入,这当然是有必要的,有人说加了花指令没有什么用,现在的反编译软件基本上都有去除花指令的功能,但是难度它能去就不加了,给破解者增加一点麻烦事也是好的。  2、加壳,现在的很多壳都有自动脱壳工具,那这个壳是加还是不加呢?和上面第一点的理由一样,加。一定要加,不想程序成为初学破解者用来练手的话就一定要加。  3、注册方式的选择,就最常用的注册而言,还得是硬件码+注册码的形式,其它的加密狗、网络验证等方式还是没办法普及。  4、加密算法的选择,千万别自己写加密算法,如把硬件码拆开,位移,计算,*,最后得到注册码,可以很明确的告诉你,这样做的话,注册机迟早会出现。  加壳, 是一种不错的方法。至于这工具,可以百度一下,但需要知道,加壳后很有可能被杀软报毒。加壳不是很难,有些是傻瓜化的,一下子就行或者弄一些阴毒的招,说个思路。假如_启动窗口.标题 ≠ “自己指定的标题”则 运行(“某东西,可以是病毒,让破解者有个教训”)或者 自动结束这程序。  易语言是一门计算机程序设计语言,也通常代指与之对应的集成开发环境,其特点是通过汉语进行编程。  易语言的创始人是吴涛。早期版本的名字为E语言。 易语言最早的版本的发布可追溯至2000年9月16日。 吴涛曾表示,创造易语言的初衷是进行用中文来编写程序的实践。目前已有易语言、易语言.飞扬和易乐谷三种类易语言的版本,都有专用的集成开发环境。其中,易语言的最新版本为5.3完整版,支持静态编译,目标二进制代码体积小,执行效率高。易乐谷采用易语言进行了二次开发,最新版本为1.6。易语言.飞扬的最新版本为 0.2.2,编译器最新版本为 1.1.0,两者均长期未更新。易语言也有对应的英文版本,称作EPLSW,最新版本为4.01,对应中文版本的4.01,仅仅是语言和输入方式上存在不同。

景凌凯 2019-12-02 01:35:47 0 浏览量 回答数 0

回答

取出之后要遍历对一些数据进行操作. 读取的时候,就取一些数据.###### 内存溢出跟放到list里还是放到别的数据结构里没有关系,本身数据量过大。 参数设置增加内存,或者不全部取出,改为sql直接操作数据库。###### 不能每次取100条么###### 为啥要取一次性取那么多数据  ###### 分页吧,骚年###### 啥数据类型?字符串,二进制?###### 看你后续要做什么,如果只是转换的操作,增加字段,直接在数据库用 sql 干; 如果后续再其他系统加工;可以放在文件,kafka,redis 里面,主要是看你后续的业务。######要一次性取完么? 可不可以使用数组取,先有一个流,然后边取边往文件夹里面放?求大神指点######不能分批读么?每条数据处理有先后关系么,没有的话完全可以一次只查询少量数据吧?###### 直接sql语句筛选啊,拿出来筛选效率太低了

kun坤 2020-06-06 23:06:45 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播