精华内容
下载资源
问答
  • VC++ 6.0 16进制转JPG,JPG转十六进制

    热门讨论 2013-01-19 16:02:21
    JPG二进制文件读出,并用十六进制显示到文本框; 将文本框中的十六进制数据转换成JPG图片文件; 并显示图片,图片显示采用GDI+库。
  • jpg = str(dict[name]) + '.jpg' save_path = os.path.join(filepath, jpg) cv2.imwrite(save_path, image) la_f.close() f.close() save(img_path, label_path, save_path, num=60000) save(img_path2, ...
    # -*- coding: utf-8 -*-
    
    
    import cv2
    import numpy as np
    import os
    
    
    img_path = 'C:/Users/Downloads/fashion_28_28/train-images-idx3-ubyte/train-images-idx3-ubyte'
    label_path = 'C:/Users/Downloads/fashion_28_28/train-labels-idx1-ubyte/train-labels-idx1-ubyte'
    save_path = 'E:/pycharm/data/Fashion_28_28/train'
    img_path2 = 'C:/Users/Downloads/fashion_28_28/t10k-images-idx3-ubyte'
    label_path2 = 'C:/Users/Downloads/fashion_28_28/t10k-labels-idx1-ubyte'
    save_path2 = 'E:/pycharm/data/Fashion_28_28/test'
    
    classes = {0: 'T-shirt_or_top',
               1: 'Trouser',
               2: 'Pullover',
               3: 'Dress',
               4: 'Coat',
               5: 'Sandal',
               6: 'Shirt',
               7: 'Sneaker',
               8: 'Bag',
               9: 'Ankle boot'}
    
    
    def save(img_path, label_path, savepath, num):
        f = open(img_path, 'rb')
        la_f = open(label_path, 'rb')
        la_f.read(8)
        f.read(16)
        dict = {}
        for n in range(num):
            image = []
            for i in range(28 * 28):
                image.append(ord(f.read(1)))
            image = np.array(image).reshape(28, 28)
            name = classes[ord(la_f.read(1))]
            filepath = os.path.join(savepath, name)
            if not os.path.isdir(filepath):
                os.makedirs(filepath)
            if name not in dict:
                dict[name] = 1
            else:
                dict[name] += 1
            jpg = str(dict[name]) + '.jpg'
            save_path = os.path.join(filepath, jpg)
            cv2.imwrite(save_path, image)
        la_f.close()
        f.close()
    
    
    save(img_path, label_path, save_path, num=60000)
    save(img_path2, label_path2, save_path2, num=10000)
    

     

    展开全文
  • 为什么要用到二进制?数字电路非常广泛,小到逻辑...这就涉及到编码制度,即将信息通过编码的方式二进制值,如 MP3、MP4、midi、jpg、gif 等等从可行性来说,采用二进制,只有 0 和 1 两个状态,能够表示 0 和 1...
    • 为什么要用到二进制?

    数字电路非常广泛,小到逻辑门电路,大到超大规模集成电路,手机,电脑,智能设备……数字信号即可以表示数字,也可以表示非数值的信息,如文字,声音,图片,视频。如何将这些非数值类的信息 变成 二进制信号呢?这就涉及到编码制度,即将信息通过编码的方式转成二进制值,如 MP3、MP4、midi、jpg、gif 等等

    1. 从可行性来说,采用二进制,只有 0 和 1 两个状态,能够表示 0 和 1 两种状态的电子器件有很多,比如开关的接通和断开、晶体管的导通和截止、磁原件的正负剩磁、电位电平的高低等都可以表示 0 和 1 两个数。使用二进制,电子器件具有实现的可行性。

    2. 从运算的简易性来说,二进制的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制乘法九九口诀有 55 条公式,而二进制乘法只有四条规则)。

    3. 从逻辑上讲,由于二进制 0 和 1 正好和逻辑代码假和真相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。 -摘自计算机为什么是二进制?

    • 十进制是“十进”,采用的是“个/十/百/千/万...”的进位递增
    • 二进制是“二进”,采用的是“1/2/4/8/16/...”的进位递增

    da1acddfeaed56ecdad7a9e231a569ca.png

    基数和位权

    在十进制系统中(基数 10),数4327.13表示

    ,其中的 10 就是我们所说的基数,基数在不同数制转换中起着重要作用。我们用数字我们知道多位数有很多位,有十位、百位和千位,处在每个位上的单位
    1表示的数值大小不同,十位上的数字1代表 10 ,百位上的数字 1 代表 100,以此类推,故我们称
    为位权 ,也称比重
    (以 10 进制为例)

    常见的进制

    计算机中的任何数据都可以用一串 0 或 1 来表示,但考虑到二进制数位太长,所以我们也可以采用八进制和十六进制来表示数值数据。为了避免出现误会,在给出一个数的同时就必须指明这个数的数制,例如:(1010)2、(1010)8、(1010)10、(1010)16所代表的数值就不同。除了用下标来表示不同的数制以外,在计算机中还常用后缀字母来表示不同的数制。后缀 B 表示这个数是二进制数(Binary);后缀 Q 表示这个数是八进制数(Octal),本来八进制数的英文单词的第一个字母应当是 O,因为字符 O 与数字 0 太容易混淆,所以常使用字符 Q 作为八进制数的后缀;后缀 H 表示这个数是十六进制数(Hexadecimal);而后缀 D 表示这个数是十进制数(Decimal)。十进制数在书写时后缀 D 可以省略,其他进制在书写时后缀一般不可省略。例如:有 4 个数分别为 375D、101B、76Q、A17H,从后缀字母就可以知道它们分别是十进制数、二进制数、八进制数和十六进制数。

    程序员们更喜欢采用程序设计语言的记号来表示不同进制的数,这就是前缀表示法,例如:在 C 语言中,八进制常数以前缀 0 开始,十六进制常数以前缀 0x 开始。

    • 十进制

      特点:有 10 个基数:0、1、2、3、4、5、6、7、8、9 写法:

    • 二进制

      特点:有两个基数:0、1 写法:

    • 八进制

      特点:有八个基数:0、1、2、3、4、5、6、7 写法:

    • 十六进制 特点:有十六个基数:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 写法:

    4221c28f5681f322a5b894199c27c235.png

    其实0~9 和 a~f都只是符号而已,如果采用 n 进制,那么我们就用到 n 种符号来排列组合即可,当然,符号是可以重复的

    进制转化

    • 整数转换

    转换 正整数 的进制的有一个简单算法,就是通过用目标基数作长除法;余数给出从最低位开始的“数字”。

    a 进制转化为 b 进制,除 r 取余数,直至商为零,余数倒序排序

    例如,1020304 从 10 进制转到 7 进制:

    68baea28403a85dacfdcdfedb44451f1.png

    再如,10110111 从 2 进制到 5 进制:(注意:b 要先转换成 a 的进制 )

    b688497d482ae08e5ce4ef632a71f68a.png
    • 记忆口诀:除 b 取余,逆序排列

    • 其他进制转换与二进制的相互转换

    bc423146f0371aaa662d754af9e8eb11.png

    二进制转换为八进制,采用“3 位并 1 位”,按从右向左方向,每 3 位二进制位一组,最高位不足 3 位,添 0 补足 3 位,然后将各组 3 位二进制数加权展开,得到八进制数。

    78a4761bc3b801f316be7d35347ef9fe.png
    • 小数转换

    转换一个“十进制” 小数,可以用重复乘法,将整数部分作为“数字”。不幸的是有限小数不一定转换成为有限小数,例如 0.1A4C 从 16 进制转换到 9 进制:

    2ca181b5031f1fcd7cb9721b33b9f53c.png
    • 记忆口诀:1取整,顺序排列 (1 在这里指的是位权)

    进制的简单运算

    1. 二进制加法:1+0=1、1+1=10、11+10=101、111+111=1110

    5d41448914e9536afffd154853b7269b.png
    1. 二进制减法:1-0=1、10-1=1、101-11=10、1100-111=101

    f9c07a47b517f9f001236a139ae83b63.png
    1. 八进制加法:3+4=7、5+6=13、75+42=137、2427+567=3216

    1446879cc5858dfc4ad4a5580877d3d0.png
    1. 八进制减法:6-4=2、52-27=23、307-141=146、7430-1451=5757

    8f6293fefb97deb0ecbd4e47e82b78d8.png
    1. 十六进制加法:6+7=D、18+BA=D2、595+792=D27、2F87+F8A=3F11

    e9487bbc1251b2d0cd89f9031316dd55.png
    1. 十六进制减法:D-3=A、52-2F=23、E07-141=CC6、7CA0-1CB1=5FEF

    2e4cec3e8048f1ebf72c85efc799ef6b.png

    乘法和除法相对来说比较复杂,涉及到逻辑门运算,属于计算机组成原理中的内容,先挖个坑,日后再填

    • 二进制是如何将加减乘除变换为加法实现的?

    加法是如何由逻辑运算与、或、异或来实现的?

    总结

    • 十进制(D),二进制(B),八进制(O),十六进制(H)

    以上内容只是说了进制转换中如何计算的问题,是一种机械化的理解。以前见到过一篇关于进制的文章,写的很好,可我现在找不到了,遗憾。进一步用代码理解进制 理解进制转换的原理

    要注意的几个地方:

    1. 在进行进制转换时,长除法中的除数的进制和被除数的进制要保持一致
    2. 从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用 0 补足
    3. 十进制转其他进制:整数部分用除基取余法,小数部分用乘基取整法,然后将整数与小数部分拼接成一个数作为转换的最后结果

    其他数制转为 十进制 ,套公式即可(b=10)。一般来讲,b 进制系统中的数有如下形式:

    ac37ffc5f49cde993f4d0ed2e573dbd0.png
    • 看完这个我笑了 hiahiahia

    拓展阅读

    二进制是计算机最适合的数据表示方法,把十进制数的各位数字变成一组对应的二进制代码,用 4 位二进制数来表示 1 位十进制数,称为二进制编码的十进制数(Binary Code Decimal),即 BCD 码。4 位二进制数可以组合出 16 种代码,能表示 16 种不同的状态,只需要使用其中的 10 种状态,就可以表示十进制数的 0~9 十个数码,而其他的 6 种状态为冗余状态。由于可以取任意的 10 种代码来表示 10 个数码,所以就可能产生多种 BCD 编码。BCD 编码既具有二进制数的形式,又保持了十进制数的特点,可以作为人机联系的一种中间表示,也可以用它直接进行运算。下图列出了几种常见的 BCD 码。

    bbf8c725f610e83b544b27dd856069db.png
    • 8421 码

    8421 码又称为自然(Nature)BCD 码,简称 NBCD 码,4 位二进制代码的位权从高到低分别为 8、4、2、1,这种编码的主要特点是:

    • 它是一种有权码,设其各位的值为 b3b2b1b0,则它所表示的十进制数为 D=8b3+4b2+2b+1b0
    • 简单直观。每个代码与它所代表的十进制数之间符合二进制数和十进制数相互转换的规则
    • 不允许出现 1010~1111。这 6 个代码在 8421 码中是非法码。

    注意:尽管在 8421 码中 0~9 十个数码的表示形式与用二进制表示的形式一样,但这是两个完全不同的概念,不能混淆。例如,一个两位的十进制数 39,它可以表示为(00111001)421 与 100111B,这两者是完全不同的。

    • 2421 码

    这种编码各位的位权从高到低分别为 2、4、2、1,其主要特点是:

    • 它也是一种有权码,所表示的十进制数为 D=2b3+4b2+2b1+1b0
    • 它又是一种对 9 的自补码,即某数的 2421 码,只要自身按位取反,就能得到该数对 9 补数的 2421 码。例如:3 的 2421 码是 0011,3 对 9 的补数是 6,而 6 的 2421 码是 1100,即将 3 的 2421 码自身按位取反可得到 6 的 2421 码。在十进制运算中,采用自补码,可以使运算器线路简化。
    • 不允许出现 0101~1010。这 6 个代码在 2421 码中是非法码。

    对于有权码来说,当规定各位的权不同时,可以有多种不同的编码方案,例如还有 4221 码、4421 码、5421 码和 84-2-1 码等。

    • 余 3 码

    余 3 码是一种无权码,从表 2-7 中可以看出,余 3 码是在 8421 码的基础上加 0011 形成的,因每个数都余 3,故称余 3 码,其主要特点是:

    • 它是一种无权码,在这种编码中各位的“1”不表示一个固定的十进制数值,因而不直观,且容易搞错。

    • 它也是一种对 9 的自补码。

    • 不允许出现 0000~0010,1101~1111。这 6 个代码在余 3 码中是非法码。

    • 格雷码(Gray 码)

    十进制 Gray 码的方案有很多种,表 2-7 中列出的只是其中的一种。Gray 码可以避免在计数时发生中间错误,所以也被称为可靠性编码。其主要特点是:

    • 它也是一种无权码。
    • 从一种代码变到相邻的下一种代码时,只有一个二进制位的状态在发生变化。
    • 具有循环特性,即首尾两个数的 Gray 码也只有一个二进制位不同,因此 Gray 码又称为循环码。
    • 十进制 Gray 码也有 6 个代码为非法码,视具体方案而定。

    参考文章

    二进制/八进制/十进制/十六进制 怎么学会?

    wikipedia --- 手指二进制

    进制(二进制、十进制、八进制、十六进制)

    拓展阅读摘自教材【计算机组成原理/蒋本珊编著.一 3 版.一北京:清华大学出版社,2013.8】

    版权声明


    • 本文为原创文章,版权归本博客所有,转载请注明出处!
    • 原文链接:https://www.betterman.xyz/183.html
    • 所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
    • 我的个人博客:青衫不是山 https://www.betterman.xyz
    展开全文
  • cifar10图片格式及将二进制文件转换成jpg的python程序
  • 用一个算法实现十进制数向二进制数转换 任务如图![任务](https://img-blog.csdnimg.cn/20201217183705653.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV...

    用一个算法实现十进制数向二进制数转换

    任务如图![任务](https://img-blog.csdnimg.cn/20201217183705653.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUyNjA5NzUy,size_16,color_FFFFFF,t_70#pic_center)

    1.

    转化思路:“除2求余,逆序排序”,既就是用十进制数除以2,可以得到一个商和余数;将余数保存起来,用商再去除以二,再得到一个商和余数,反复进行,直到商小于1时结束;然后将之前所得的余数逆序输出,得到的就是该十进制数的二进制写法。
    我们先用while做一个,这次是用数组接受余数,而将该数组逆置从头到尾输出时并没有改变数组下标,也就是将a[0]和a[i-1]的数互换,以此类推。

    #include<stdio.h>
    int main()
    {
    	int n,a[100],i=0;
    	printf("请输入一个十进制数:");
    	scanf("%d"&n);
    	while(n!=0)
    	{
    		a[i]=n%2;
    		n=n/2;
    	}
    	printf("其二进制数为:");
    	for(i-=1;i>=0;i--)
    		printf("%d",a[i]);
    	return 0;
    }
    

    运行结果:

    请输入一个十进制数:9
    其二进制数为:1001
    请输入一个十进制数:23
    其二进制数为:10111

    2.

    第二次时我用for写一个,原理类似,稍加修改就是,但是这一次我改变的不是输出时数组的顺序,改变的是数组下标,从而实现逆置输出。

    #include<stdio.h>
    int main()
    {	
    int n,a[100],i=0;
    int j,t,k;//第二种
    	for(i=0;n>0;++i)
    	{
    		a[i]=n%2;
    		n=n/2;
    	}
    	printf("其二进制数为:");
    	i=i-1;
    	j=i;k=i;//j是代表数组中最大下标
    	for(i=0;i<j;i++,j--)
    		{	
    			t=a[i];
    			a[i]=a[j];
    			a[j]=t;
    	}
    		for(i=0;i<=k;i++)
    			printf("%d ",a[i]);
    	return 0;
    }
    

    运行结果

    请输入一个十进制数:9
    其二进制数为:1001
    请输入一个十进制数:23
    其二进制数为:10111

    新手代码可能会有冗余。

    展开全文
  • 图片二进制转base64

    2020-04-22 14:55:55
    with open("##.jpg","rb") as f: # 二进制方式打开图文件 base64_str = base64.b64encode(f.read()) # base64编码 # base64图片 img_data = base64.b64decode(base64_str) # 解码成字节 ...
    import base64
    # 图片转base64
    with open("##.jpg","rb") as f:  # 二进制方式打开图文件
        base64_str = base64.b64encode(f.read())  # base64编码
        
        
    # base64转图片
    img_data = base64.b64decode(base64_str)  # 解码成字节

     

    展开全文
  • java用十进制转二进制

    2016-12-02 13:21:05
    虽然题目简单不过还是有大神能指点一下我这个菜鸡![图片](https://img-ask.csdn.net/upload/201612/02/1480684971_672130.jpg)
  • 10进制转换成2进制可能是大家学习语言的入门点,由于UP年少无知,刚开始的时候好像是第一篇自己写的BOKE还是用手机写的,有一些格式没有清除,不方便与大家观看,复制。 但是居然这是我BOKE里面阅读量最大的一篇,...
  • php将图片转二进制字符串的方法:首先使用filesize()获取图片文件的大小,赋值给变量$PSize;然后使用fopen()打开图片文件,赋值给变量$fp;最后使用“fread($fp,$PSize)”读取文件,转换为二进制字符串数据。php将...
  • header( "Content-type: image/jpeg");$PSize = filesize('1.jpg');...就这么几句话,就将图片以二进制流的形式输出到客户端了,和打开一张图片没有任何区别,需要注意的是,发送的header要根据具体情况而定,不一...
  • jpg文件转换成bgr二进制文件

    千次阅读 热门讨论 2018-12-10 20:44:32
    为毛我要干这件事,把一张jpg图片成bgr(注意顺序是bgr)二进制文件?最近在弄华为Hi3519AV100开发板上的一些深度学习的样例程序,没想到它的输入文件不是普通的jpg,而是bgr格式的二进制文件,所以不是我闲得蛋疼。...
  • C++将二进制图片数据转换为JPG格式

    千次阅读 2018-12-03 21:58:28
    // strPhotoData为string类型,包含二进制图片数据 std::vector&lt;char&gt; vec_data(strPhotoData.begin(), strPhotoData.end()); cv::Mat mat = cv::imdecode(cv::Mat(vec_data), CV_LOA...
  • 文章目录 问题描述 解决方案 封装 参考文献 问题描述 压缩二进制图像(PNG转JPG) 1.png,69.7KB 解决方案 Image.save() 进 BytesIO 对象再读出来即可 from PIL import Image from io import BytesIO img = Image....
  • PHP将文件转二进制的方法:首先设置“header( "Content-type: image/jpeg");”;然后通过fopen和fread函数打开并读取文件;最后将图片文件以二进制流的形式输出到客户端即可。推荐:《PHP教程》php将文件转换成...
  • Unity C#图片转换二进制流、精灵与Png、jpg-附件资源
  • 注意 1.首先需要下载cifar10数据到本地cifar(下载python version) 2. 不知道为什么scipy.mise加载不出imsave,所以我...[j]].decode() + '/batch_' + str(i) + '_num_' + str(j) +'.jpg' imsave(img_name,img) 结果
  • 图像jpg转.bgr二进制文件_海思开发

    千次阅读 2019-07-25 11:30:59
    作者:昌山小屋 来源:CSDN ...参考为毛我要干这件事,把一张jpg图片成bgr(注意顺序是bgr)二进制文件?最近在弄华为Hi3519AV100开发板上的一些深度学习的样例程序,没想到它的输入文件不是普通的jpg,而...
  • Java图片和二进制

    2014-10-29 21:31:42
    Java图片和二进制,可以是jpg,png,gif格式 package com.webkfa.test; /** * * @author songlei */ import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io....
  • 转载自:...直接写入图片 with open('./test.jpg', 'wb') as f: f.write(buffer_data) # buffer_data就是图片的二进制数据 成opencv图片 img_np_arr = np....
  • 图片转二进制流转换图片互 Png To Sprite —— Png Sprite Sprite To Png —— Sprite Png 至于生成到哪里Load Picture To Create —— 加载图片并创建 使用场景:将软件中的图片保存。将指定的UI 精灵图...
  • 图片转二进制

    2013-12-23 17:20:53
    http=new ActiveXObject("msxml2.xmlhttp"); // xmlHttp=new ActiveXObject var url = 'D:\hg.jpg'; // encodeURI(encodeURI(url)); http.open("get",url,false); ...//这里得到了图片的二进制内容 var Contents
  • 使用二进制或者bin提升读取png,jpg等图片的速度使用bin优化提升加载速度,不用解码。代码# original 实验读取平均大小为4MB和1MB大小图片的png图片0.06496280908584595 s读取平均大小为8MB和2MB大小(由png转换)的bin...
  • 我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件、jpg文件亦或是mp4文件,本质上都是0和1组成的。而在C++中我们可以通过字节流来读写文件,也就是说我们可以...
  • php图片转换成二进制的方法:首先获取需要转换的图片;然后使用fopen函数读取图片信息;接着使用“fread($fp, filesize($img));...图片转二进制方式一:$img = '111111.jpg';$fp= fopen($img, 'rb');$content =...
  • PHP笔记一:图片转二进制数据

    千次阅读 2019-07-15 16:33:56
    这次记录的东西很简单,就是把图片二进制数据存到数据库中,以及取出数据输出图片显示。 图片转二进制 方式一: $img = '111111.jpg'; $fp = fopen($img, 'rb'); $content = fread($fp, filesize($img));//...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457
精华内容 182
关键字:

二进制转jpg