精华内容
下载资源
问答
  • 用二进制数字串生成二维码图片

    千次阅读 2019-04-20 16:09:44
    打CTF比赛时,遇到题目将flag隐藏到二进制数中,数字的长度为一个整数的平方,以01表示黑白,利用Python3的PIL中的Image库,用二进制生成一个二维码。 找了我半天,主要是写个备忘。。 代码 from PIL import Image ...

    用二进制数字串生成二维码图片

    前言

    最近一个CTF比赛时,遇到一个题目给出了一段全是01的数字串,且数字的长度为一个整数的平方(如25^2=625)时,有可能是以0、1表示黑或者白的一个像素,这样就可以生成一个正方形的像素图,以前遇到过这样的题目生成了一个二维码,扫描二维码得到Flag。
    这里利用Python3的PIL中的Image库,用01数字串生成一个二维码。

    代码

    from PIL import Image
    MAX = 25
    pic = Image.new("RGB",(MAX, MAX))
    str = "得到的二进制数字"
    i=0
    for y in range (0,MAX):
        for x in range (0,MAX):
            if(str[i] == '1'):
                pic.putpixel([x,y],(0, 0, 0))
            else:
                pic.putpixel([x,y],(255,255,255))
            i = i+1
    pic.show()
    pic.save("flag.png")``
    

    细节

    原本是SCTF中的一道MISC题,题目中得到的二进制数字串如下 1111111000100001101111111100000101110010110100000110111010100000000010111011011101001000000001011101101110101110110100101110110000010101011011010000011111111010101010101111111000000001011101110000000011010011000001010011101101111010101001000011100000000000101000000001001001101000100111001111011100111100001110111110001100101000110011100001010100011010001111010110000010100010110000011011101100100001110011100100001011111110100000000110101001000111101111111011100001101011011100000100001100110001111010111010001101001111100001011101011000111010011100101110100100111011011000110000010110001101000110001111111011010110111011011
    运行代码后得到图片,因为只有625像素图片比较小。
    在这里插入图片描述
    扫描二维码得到Flag
    在这里插入图片描述
    找了我半天,而且装Pillow库很麻烦,而且不这么写from PIL import Image还会出问题,网上也没有找到好的办法
    可惜这次比赛没有考到这个点,杂项真令人头大,不过这个知识点有这么个了解就够了,于是拿出来写个备忘。。

    合天公众号的一篇文章提到这个,参考的代码,也有很多好的可以参考
    https://mp.weixin.qq.com/s/RdHbQrhJdJrbaI5MsHGpkg

    展开全文
  • 每个 byte 转成 8 位二进制数据,二进制的 0、1表示像素点的黑白。测试点阵是 48*48 像素,2304个点,对应 288 个byte 数据。 搜了一下没找到现成轮子,想着难度也不大,参考 zxing 二维码的显示,顺便复习下 ...

    收到一个需求,平台下发给单片机的二维码数据不是字符串,而是一堆 byte 数据,接口不能改动,Android 端需要显示这个二维码。
    每个 byte 转成 8 位二进制数据,二进制的 0、1表示像素点的黑白。测试点阵是 48*48 像素,2304个点,对应 288 个byte 数据。
    搜了一下没找到现成轮子,想着难度也不大,参考 zxing 二维码的显示,顺便复习下 bitmap 知识,搞定。不多说,上代码

    //测试数据
    String data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000FFFFBF9E0EFEFFFFA098D682FFFFAEAD4CBAFFFFAEA4F2BAFFFFAE8444BAFFFFA084A282FFFFBFAAAAFEFFFF80179A00FFFF86D72218FFFF925EBB16FFFFB7926380FFFFA304C056FFFFAD9623DEFFFF88246160FFFF92E96B1AFFFFAE57735AFFFFBB9F8606FFFFB60178AAFFFFB4D69F42FFFFBD2B6A52FFFFB5E533FCFFFF803D8A20FFFFBFAA26BEFFFFA088763EFFFFAEB0C7FCFFFFAEA90574FFFFAE853316FFFFA0892534FFFFBF9957C8FFFF80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
    
    private Bitmap createQRImage(ImageView imageView,String data) {
     
        byte[] bytes = BytesUtils.hexStringToBytes(data);
    
        //原始数据是 48*48 的点阵
        int QR_SIZE=48;
        //实际图像大小是原始数据的几倍
        int MULTIPLE=2;
        int QR_WIDTH=QR_SIZE*MULTIPLE;
        int QR_HEIGHT=QR_SIZE*MULTIPLE;
    
        int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
        for (int y = 0; y < QR_HEIGHT; y++) {
            for (int x = 0; x < QR_WIDTH; x++) {
                if (getPixel(bytes, y, QR_WIDTH, x,MULTIPLE)) {
                    pixels[y * QR_WIDTH + x] = 0xff000000;
                } else {
                    pixels[y * QR_HEIGHT + x] = 0xffffffff;
                }
            }
        }
        //生成二维码图片的格式,使用ARGB_8888
        Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
        imageView.setImageBitmap(bitmap);
        return bitmap;
    }
    
    private boolean getPixel(byte[] bytes, int y, int QR_WIDTH, int x,int multiple) {
        int new_y = y / multiple;
        int new_QR_WIDTH = QR_WIDTH / multiple;
        int new_x = x / multiple;
    
        int index = new_QR_WIDTH / 8 * new_y + new_x / 8;
        byte tByte = bytes[index];
        String bin = Integer.toBinaryString((tByte & 0xFF) + 0x100).substring(1);
        String pix = bin.substring(new_x % 8, new_x % 8 + 1);
        return "0".equals(pix);
    }
    
    //工具类方法
    public static byte[] hexStringToBytes(String hexString) {
            if (hexString == null || hexString.equals( "" )) {
                return new byte[0];
            }
            // toUpperCase将字符串中的所有字符转换为大写
            hexString = hexString.toUpperCase();
            int length = hexString.length() / 2;
            // toCharArray将此字符串转换为一个新的字符数组。
            char[] hexChars = hexString.toCharArray();
            byte[] d = new byte[length];
            for (int i = 0; i < length; i++) {
                int pos = i * 2;
                d[i] = (byte) (charToByte( hexChars[pos] ) << 4
                        | charToByte( hexChars[pos + 1] ));
            }
            return d;
        }
    
    // charToByte返回在指定字符的第一个发生的字符串中的索引,即返回匹配字符
    private static byte charToByte(char c) {
            return (byte) "0123456789ABCDEF".indexOf( c );
    }
    参考:https://blog.csdn.net/Guet_Kite/article/details/74011975
    展开全文
  • 计算机为什么用二进制

    万次阅读 2019-06-14 08:27:29
    00 前言熟悉编程的人都知道二进制总是一个让人晦涩难懂的词汇,只有大神级的程序员才有资格把玩它。 我们今天来重新认识一下二进制,了解编程中的数学知识和计算机为什么使...

    640?wx_fmt=jpeg


     

    00 前言  

    
      


    熟悉编程的人都知道二进制总是一个让人晦涩难懂的词汇,只有大神级的程序员才有资格把玩它。 我们今天来重新认识一下二进制,了解编程中的数学知识和计算机为什么使用二进制?


    01 先聊聊十进制  


    我们平时使用的是10进制计数法。

    • 使用的数字有0、1、2、3、4、5、6、7、8、9共10个数字

    • 数位有一定的意义,从右往左分别表示个位、十位、百位、千位……

    上面的规则我们在小学数学都学过了,日常生活中也一直在用,是众所周知的常识。 在此权当复习,下面我们将通过实例来了解一下10进制计数法。

    分解1024

    首先,我们以 1024 这个数为例。1024表示的是由 1、0、2、4 这4个数字组成的一个称作 1024 的数(你这不废话)。

    1024


    这样并排的数字,因数位不同而意义相异。

    • 1 表 示 “1000 的个数”

    • 0 表 示 “100 的个数”

    • 2 表 示 “10 的个数”

    • 4 表 示 “1 的个数”


    综上所述,1024 这个数是1个1000、0个100、2个10和4个1累加的结果。用数字和语言来冗长地说明有些无趣,下面就用图示来表现。

    [ 1x1000 + 0x100 + 2x10 + 4x1 ]

    如图,将数字的字体大小加以区别,各个数位上的数字 1、0、2、4 的意义便显而易见了。1000是 10x10x10,即(10^3)(10的3次方),100是 10x10,即(10^2)(10的2次方)。因此,也可以写成如下形式(请注意箭头所示部分)。

    [ 2x10^3 + 5x10^2 + 0x10 + 3x1 ]

    再则,10是 (10^1)(10的1次方),1是 (10^0)(10的0次方),所以还可以写成如下形式。

    [ 2x10^3 + 5x10^2 + 0x10^1 + 3x10^0 ]

    千位、百位、十位、个位,分别可称作 (10^3)的位、(10^2)的位、(10^1)的位、(10^0)的位。 10制计数法的数位全都是(10^n)的形式。这个10称作10进制计数法的基数

    基数 10右上角的数字——指数,是 3、2、1、0 这样有规律地顺次排列的,这点请记住。

    [ 2x10^3 + 5x10^2 + 0x10^1 + 3x10^0 ]


    02 二进制计数法  


    计算机在处理数据时使用的是2进制计数法。从10进制计数法类推,便可很快掌握它的规则。

    • 使用的数字只有0、1,共2种。

    • 从右往左分别表示1位、2位、4位、8位


    用2进制计数法来数数,首先是0,然后是1,接下去···不是2,而是在1上面进位变成10,继而是11,100,101……

    下面的表格展示了0到79的数的10进制计数法和2进制计数法。

    10进制2进制10进制2进制10进制2进制10进制2进制
    0020101004010100060111100
    1121101014110100161111101
    21022101104210101062111110
    31123101114310101163111111
    4100241100044101100641000000
    5101251100145101101651000001
    6110261101046101110661000010
    7111271101147101111671000011
    81000281110048110000681000100
    91001291110149110001691000101
    101010301111050110010701000110
    111010311111151110011711000111
    1211003210000052110100721001000
    1311013310000153110101731001001
    1411103410001054110110741001010
    1511113510001155110111751001011
    16100003610010056110111761001100
    17100013710010157111001771001101
    18100103810011058111010781001110
    19100113910011159111011791001111

    分解1100

    在此,我们以2进制表示的1100 (2 进制数的 1100) 为例来探其究竟。

    1100


    和10进制计数法一样,并排的数字,各个数位都有不同的意义。从左往右依次为:

    • 1 表 示 “8 的个数”

    • 1 表 示 “4 的个数”

    • 0 表 示 “2 的个数”

    • 0 表 示 “1 的个数”


    也就是说,2进制的1100是1个8、1个4、0个2和0个1累加的结果。这里出现的8、4、2、1,分别表示 (2^3)(2^2)(2^1)(2^0) 即2进制计数法的1100,表示如下意思。

    [ 1x2^3 + 1x2^2 + 0x2^1 + 0x2^0 ]

    这样计算就能将2进制计数法的1100转换为10进制计数法。

    [ 1 x 2^3 + 1 x 2^2 + 0 x 2^1 + 0 x 2^0 = 1 x 8 + 1 x 4 + 0 x 2 + 0 x 1 \qquadqquadqquad;,= 8 + 4 + 0 + 0 \qquad;,= 12 ]

    由此可以得出,2进制的1100若用10进制计数法来表示,则为12。

    基数转换

    接下来我们试着将10进制的12转换为2进制。这需要将12反复地除以2(12除以2,商为6; 6再除以2,商为3; 3再除以2……),并观察余数为 “1” 还是 “0”。余数为0则表示“除完了”。随后再将每步所得的余数的列(1和0的列)逆向排列,由此就得到2进制表示了。

    12 / 2 = 6 (余0)6  / 2 = 3 (余0)3  / 2 = 1 (余1)1  / 2 = 0 (余1)


    那么10进制的12转换为二进制就是 1100。同样我们试将10进制的1024转换为2进制计数法。

    
      

    1024 / 2 = 512 (余0)
    512 / 2 = 256 (余0)
    256 / 2 = 128 (余0)
    128 / 2 = 64 (余0)
    64 / 2 = 32 (余0)
    32 / 2 = 16 (余0)
    16 / 2 = 8 (余0)
    8 / 2 = 4 (余0)
    4 / 2 = 2 (余0)
    2 / 2 = 1 (余0)
    1 / 2 = 0 (余1)


    可以知道1024用2进制表示为 10000000000。各个数位的权重如下:

    [ 1x2^11 + 0x2^10 + 0x2^9 + 0x2^8 + 1x2^7 + 1x2^6 + 0x2^5 + 0x2^4 + 0x2^3 + 1x2^2 + 1x2^1 + 1x2^0 ]

    在 10进制中,基数为10,各个数位是以 (10^n) 的形式表现的。而2进制中,基数为2, 各个数位是以 (2^n) 的形式表现的。从10进制计数法转换为2进制计数法,称作10进制至2进制的基数转换


    03 计算机中为什么采用2进制计数法  


    计算机中一般釆用2进制计数法,我们来思考一下原因。计算机是由逻辑电路组成的,电路中通常只有两个状态,开关的接通和断开, 这两种状态正好可以用“1”和“0”表示。计算机在表示数的时候,会使用以下两种状态。

    • 开关切断状态

    • 开关连通状态


    虽说是开关,但实际上并不需要机械部件。总之,它能够形成两种状态,这两种状态,分别对应0和1这两个数字。

    • 开关切断状态 ··· 0

    • 开关连通状态 ··· 1


    1个开关可以用0或1来表示,如果有许多开关,就可以表示为许多个0或1。你可以想象这里排列着许多开关,各个开关分别表示2进制中的各个数位。这样一来,只要增加开关的个数,不管是多大的数字都能表示出来。

    电脑的基层部件是由集成电路组成的,这些集成电路可以看成是一个个门电路组成,(当然事实上没有这么简单的)。当计算机工作的时候,电路通电工作,于是每个输出端就有了电压。电压的高低通过模数转换即转换成了二进制:高电平是由1表示,低电平由0表示。也就是说将模拟路转换成为数字电路。这里的高电平与低电平可以人为确定,一般地,2.5伏以下即为低电平,3.2伏以上为高电平。

    电子计算机能以极高速度进行信息处理和加工,包括数据处理和加工,而且有极大的信息存储能力。数据在计算机中以器件的物理状态表示,采用二进制数字系统,计算机处理所有的字符或符号也要用二进制编码来表示。

    当然,做成能够表示0〜9这10种状态的开关,进而让计算机釆用10进制计数法,这在理论上也是可能的。但是,与0和1的开关相比,必定有更为复杂的结构。

    另外,请比较一下面表格所示的加法表。2进制的表比10进制的表简单得多吧。若要做成1位加法的电路,采用2进制要比10进制更为简便。

    10进制加法表

    +0123456789
    00123456789
    112345678910
    2234567891011
    33456789101112
    445678910111213
    5567891011121314
    66789101112131415
    778910111213141516
    8891011121314151617
    99101112131415161718


    2进制加法表

    +01
    001
    1110


    不过,比起10进制,2进制的位数会增加许多,这是它的缺点。例如在10进制中2503只有4位,而在2进制中要表达同样的数则需要100111000111共12位数字。这点从表1-2中也显而易见。

    人们觉得10进制比2进制更容易处理,是因为10进制计数法的位数少,计算起来不容易发生错误。此外,比起2进制,釆用10进制能够简单地通过直觉判断出数值的大小。人的两手加起来共有10个指头,这也是10进制更容易理解的原因之一。

    不过,因为计算机的计算速度非常快,位数再多也没有关系。而且计算机不会像人类 那样发生计算错误,’ 不需要靠直觉把握数字的大小。对于计算机来说,处理的数字种类少、 计算规则简单就最好不过了。

    让我们来总结一下。

    • 在10进制计数法中,位数少,但是数字的种类多。

      • → 对人类来说,这种比较易用。

    • 在2进制计数法中,数字的种类少,但是位数多。

      • → 对计算机来说,这种比较易用。


    鉴于上述原因,计算机釆用了2进制计数法。 人类使用10进制计数法,而计算机使用2进制计数法,因此计算机在执行人类发出的任务时,会进行10进制和2进制间的转换。计算机先将10进制转换为2进制,用2进制进行计算,再将所得的2进制计算结果转换为10进制。

    按位计数法

    什么是按位计数法

    我们学习了10进制和2进制两种计数法,这些方法一般称作按位计数法。除了10进制和2进制以外,还有许多种类的按位计数法。在编程中,也常常使用8进制和16进制计数法。

    8进制计数法

    8进制计数法的特征如下:

    • 使用的数字有0、1、2、3、4、5、6、7共8种

    • 从右往左分别为 (8^0) 的位、(8^1) 的位、(8^2) 的位、(8^3) 的位···(基数是8)


    16进制计数法

    16进制计数法的特征如下:

    • 使用的数字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16种

    • 从右往左分别为 (16^0) 的位、(16^1) 的位、(16^2) 的位、(16^3) 的位···(基数是16)

    在16进制计数法中,使用A、B、C、D、E、F (有时也使用小写字母a、b、c、d、e、f) 来表示10以上的数字。

    N进制计数法

    一般来说,N进制计数法的特征如下:

    • 使用的数字有0,1,2,3,···,N-1, 共 N 种

    • 从右往左分别为 (N^0) 的位、(N^1) 的位、(N^2) 的位、(N^3) 的位··· (基数是N)

    例如,N 进制计数法中,4位数 (a_3a_2a_1a_0) 为

    [ a_3xN^3 + a_2xN^2 + a_1xN^1 + a_0xN^0qquad(a_3、a_2、a_1、a_0是0〜N-1中的数字) ]

     

    04 总结  


    二进制的优点

    1. 技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。

    2. 简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。

    3. 适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。

    4. 易于进行转换,二进制与十进制数易于互相转换。

    5. 用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。


    640?


    —————END—————


    640?wx_fmt=jpeg

    识别图片二维码,关注“无敌码农”获取精彩内容

    展开全文
  • javascript读写二进制

    千次阅读 2018-01-04 16:56:09
    读写二进制数据都需要使用这两个对象。 ArrayBuffer:  ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer 不能直接操作,而是要通过类型数组对象或 DataView 对象来操作,它们会将...

    javascript里有两个内置对象,一个是ArrayBuffer;一个是DataView。

    读写二进制数据都需要使用这两个对象。

    ArrayBuffer:

            ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer 不能直接操作,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。

    DataView:

            DataView视图是一个可以从ArrayBuffer对象中读写多种数值类型的底层接口,在读写时不用考虑平台字节序问题。

    以上这两个定义是从api那里抄来的。

    一般刚开始接触这两个对象的人都不能太明白。


    那就用实例说话:

    var str = "test!!"
    
    var byteArr = new ArrayBuffer(4 + 2 + 4 + 2 + str.length);   //参数是ArrayBuffer的字节大小。
    var dv = new DataView(byteArr);   //DataView有三个参数,后两个可以缺省;每一个要是ArrayBuffer对象或SharedArrayBuffer对象
    
    //下面的DataView的setUint*和getUint*方法自己去查阅。
    
    dv.setUint32(0, 234, false);   
    dv.setUint16(4, 123, false);
    dv.setFloat32(6, 55.66, false);
    
    dv.setUint16(10, str.length, false);   //这个Uint16是表示字符串的字节大小,在写入字符串的时候一定要先写一个Uint16
    for(var i = 0; i < str.length; i++) {
      dv.setUint8(12 + i, str[i].charCodeAt(0));
    }
    
    
    
    
    var dataView = new DataView(byteArr);
    var int = dataView.getInt32(0, false);
    var short = dataView.getInt16(4, false);
    var float = dataView.getFloat32(6, false);
    var len = dataView.getInt16(10, false);
    
    var str2 = "";
    for(var i = 0; i < len; i++) {
      str2 = str2 + String.fromCharCode(dv.getUint8(12 + i));
    }
    
    console.log(int, short, float, len);
    console.log("str2", str2);
    注意:每个DataView的setUint*和getUint*方法的第一个参数都表示读写这一个数据时的offset(偏移量)。

    在与服务器交互的时候,dv对象是传给服务器的;dataView对象是从服务器接收回来的。

    如果还需要加上protobuf的话,需要看protobuf的一些接口,但是也是要运用到ArrayBuffer对象和DataView对象的。

    ArrayBuffer API

    DataView API

    展开全文
  • 文章目录背景安装前注意事项版本的选择卸载已安装的MySQL配置sudo权限基于二进制安装包安装安装包的下载安装包目录说明解压二进制安装包配置系统环境变量创建文件目录创建操作系统用户初始化MySQL数据库初始化SSL...
  • 听说99%的同学都来这里充电吖 本系列为线下学员学习笔记整理分享,如有想要报名参加线下培训,可以点击以下超链接文章了解,购买开发板可以到叁...本篇文章,记录BCD转二进制二进制转BCD的原理,及verilog...
  • MySQL二进制日志系列

    2019-09-24 17:57:53
    MySQL二进制日志系列 总结 1、binary log记录的是 已经提交commit 的各种DML和DDL语句,类似oracle的redo log(包含...
  • ​本系列文章经补充和完善,已修订整理成书《Java编程的逻辑》,由...上节我们提到正整数相乘的结果居然出现了负数,要理解这个行为,我们需要看下整数在计算机内部的二进制表示。 十进制 要理解整数的二进制,...
  • 二维码

    2019-12-15 19:05:16
    二维码 1. 二维码的分类 线性堆叠式二维码 矩阵式二维码 邮政码 线性堆叠式二维码: ​ 建立在一维条形码...在矩阵相应元素位置上,点(方点、原点或者其他图形)的出现表示二进制 1, 点的不出现表示二进制的...
  • 格雷码与二进制的转换

    千次阅读 2017-12-22 23:38:58
    格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。格雷码的基本特点就是任意两个相邻的...
  • 二进制运算案例

    2019-08-31 14:30:12
    二进制知识巩固和一些常用运算 一)判断一个数是奇数还是偶数 原理:本身和1进行按位与运算,奇数会等于1,偶数会等于0 public static void main(String[] args) { // 判断一个数是奇数还是偶数 System.out....
  • 一 目录 不折腾的前端,和咸鱼有什么区别目录一 目录二 前言三 字符串求和/求差四 十进制转二进制二进制转十进制六 总结二 前言 在刷题的生涯中,你会碰到让你尴尬的一个问题:十进制转...
  • 请你将数组中的元素按照其二进制表示中数字1的数目升序排序。 如果存在多个数字二进制中1的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] ...
  • 玩转前端二进制

    2020-07-08 18:25:12
    本文阿宝哥将按照以下的流程来介绍前端如何进行图片处理,然后穿插介绍二进制、Blob、Blob URL、Base64、Data URL、ArrayBuffer、TypedArray、Dat...
  • Python实现十进制和二进制、八进制、十六进制的相互转换1. 前言2. 实现思想2.1 十进制转换为其他进制2.2 其他进制转换为十进制3. 参考资料 1. 前言 此文方便后期的复习,如果有问题,欢迎批评指正。 2. 实现思想 2.1...
  • 本篇终于讲到了齐姐文章里常常出现的分割线!计算机说到底就是 0 和 1,所有的数在内存中都是以二进制的形式储存的。而位操作,或者说位运算,就是直接对内存中的二进制位进行操作。位运算可以说...
  • PNG 解码是指将一张 PNG 图片的二进制数据转换成像素点数据 ImageData。PNG 的二进制数据有很多方式获取。在浏览器中可以得到 ArrayBuffer 类型的二进制数据:fetch在 Node.js 中,可以得到 Buffer 类型的二进制数据...
  • 请求一张图片,返回的数据类型是二进制,要将图片显示出来。 Origin My GitHub 图片 src 为二进制的处理 这种场景下,首先想到图片的 src 为 base64 的情况,了解 Base64 后,认为理论上可行。查询资料,发现了...
  • 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。 例如,把 9 表示二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3 ...
  • 小编根据C1认证的成长路径整理了数据编码的相关资源,从零基础带你进入数据编码的世界,除了基础概念,还包含进制转换、进制计算、base64编码解码和二进制炸弹等。让小伙伴们从无到有,从浅入深的系统地学习数据编码...
  • 请求图片处理二进制乱码采坑记

    千次阅读 2018-10-30 15:53:19
    一般来所,直接axios请求就可以了,但是返回给了我一堆二进制乱码,乱码情况如下: 然后一脸懵逼,正好我在坐窗子旁边,被太阳烤得精神恍惚,毫无头绪。然后,找原因呗,一直尝试了好多办法;都没想起是没传递...
  • 一 目录 不折腾的前端,和咸鱼有什么区别目录一 目录 前言三 解题及测试四 LeetCode Submit五 解题思路 前言 难度:简单涉及知识:位运算题目地址:https://le...
  • 我们都知道,计算机的底层都是使用二进制数据进行数据流传输的,那么为什么使用二进制表示计算机呢?或者说,什么二进制数呢?在拓展一步,如何使用二进制进行加减乘除?二进制数...
  • 二维码什么

    2015-04-11 11:50:08
    二维码(Quick Response Code),又称维条码,它是特定的几何图形按一定规律在平面(维方向)上分布的黑白相间的图形,是所有信息数据的一把钥匙。在现代商业活动中,可实现的应用十分广泛,如:产品防伪/溯源...
  • 在这次的公众号项目中,需要一个用户的小程序二维码,一开始想的是实时生成小程序二维码,后台问我行不行,隐约记得微信好像确实提供了这个功能,就答应下来了。一开始以为只需要access_tojen我就可以自己生成了,...
  • 在数字电路中数据都是用二进制的形式存储,要想显示就需要进行转换,对于一个两位的数值,对10取除可以得到其十位的数值,对10取余可以得到个位的数值。对于Verilog来说它的标准是支持除法和取余运算的,综合器也会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,421
精华内容 2,968
关键字:

二维码用什么表示二进制的