zoukankan      html  css  js  c++  java
  • python 常用技巧

    一、字符串与数值的转换

           Python中字符串转换为数值:

               str_num = '99'

               num = int(str_num)

           整型数转换为字符串:

               num = 99

               str_num = str(num)

    二、负数向二进制和十六进制转换

           负数neg=-45054,为int数据类型

           方法一:

                  求负数十六进制的公式为:

                  负数十六进制 = hex ( 负数  &  0xFF....FF )  (注意:几个F取决于数据类型的范围,如int数据类型取0xFFFFFFFF)

                  neg十六进制 = hex(-45054 & 0xFFFFFFFF) = hex(4294922242) = 0xFFFF5002

                  neg二进制 = bin(neg十六进制)= bin(0xFFFF5002) = 11111111111111110101000000000010

          方法二:

                  利用struct模块求负数的十六进制

                   import struct

                   s_hex_neg = pack('i', neg) = 'x02Pxffxff'       //这里是十六进制的可见字符ascii表示

                   利用binascii.hexlify将可见字符也进行十六进制表示

        hex_neg = binascii.hexlify(s_hex_neg) = 0250ffff

        将hex_neg进行逆置就是其十六进制

        hex_neg[::-1] = ffff0520

    三、十六进制还原成负数和二进制

      neghex=0xFFFF0520,是int数据类型

        1.十六进制转为二进制

          negbin = bin(neghex)='0b11111111111111110000010100100000' 

          如果neghex_s='0xFFFF0520', 是字符串表示,那么negbin=bin(int(neghex_s, 16))='0b11111111111111110000010100100000'

        2.十六进制还原为负数

          先提取为十六进制的字符串,并逆置

          neghex_s = hex(neghex)[2:-1] = 'ffff0520'

          neghex_s=neghex_s[::-1] = '0250ffff'

          使用binascii.unhexlify进行去十六进制化

          neghex_pack=binascii.unhexlify(neghex_s)='x02Pxffxff'

          再利用struct.unpack进行解析

          neg=struct.unpack('i', neghex_pack)=(-45054,)

          那么neg[0]就是neghex还原的负数

    四、二进制向十六进制和负数转化

      neg_bin_s='11111111111111110000010100100000',字符串类型

        1.二进制向十六进制转化

          首先将neg_bin_s按四个字符一组进行分割,然后求其十六进制表示,只要求出十六进制表示,就可以参考“二”进行处理了

            neg_bin_list=[]

            for i in range(0, len(neg_bin_s), 4):

                 neg_bin_list.append(neg_bin_s[i:i+4])

            neg_bin_list=['1111', '1111', '1111', '1111', '0000', '0101', '0010', '0000']

          求取0~15的二进制到十六进制字符的key-value映射

            hex_map={}

             for i in range(0,16):      hex_map[bin(i)[2:].zfill(4)]=hex(i)[2:]

          以neg_bin_list元素为key,求取其表示的十六进制字符

            neg_hex_s=''

            for i in neg_bin_list:

                 neg_hex_s += hex_map[i]

          求得:neg_hex_s = 'ffff0520'

          从而,求得该二进制字符串对应的十六进制为0xFFFF0520

      2.二进制还原成负数

        在上面步骤1中求得二进制对应的十六进制为‘ffff0520',那么参考“十六进制还原成负数”的做法,可以求出负数

        将十六进制"ffff0520"逆置

          neghex_s=neg_hex_s[::-1] = '0250ffff'

        使用binascii.unhexlify进行去十六进制化

          neghex_pack=binascii.unhexlify(neghex_s)='x02Pxffxff'

        再利用struct.unpack进行解析

          neg=struct.unpack('i', neghex_pack)=(-45054,)

        那么neg[0]就是二进制字符串neg_bin_s还原的负数

    五、实现十进制转二进制、八进制、十六进制

       # -*- coding: UTF-8 -*-

      # Filename : test.py
     
      # 获取用户输入十进制数
      dec = int(input("输入数字:"))

      print("十进制数为:", dec)
      print("转换为二进制为:", bin(dec))
      print("转换为八进制为:", oct(dec))
      print("转换为十六进制为:", hex(dec))

     

    六、将txt文档中是数值型数据读入到array数组中

      1.介绍我的txt文件内容是这样的,准确来说是在excle表格中复制粘贴到txt文档中的(这里的一列介绍excle中的一列,一行就是excle中的一行),如图所示:

          

      2.执行如下代码,特别说明一下,k值的含义是txt中的列数,本实验是6列,所以k的赋值为6:

    #-*-coding:UTF-8 -*-
    import numpy as np
    def loadDatadet(infile,k):
        f=open(infile,'r')
        sourceInLine=f.readlines()
        dataset=[]
        for line in sourceInLine:
            temp1=line.strip(' ')
            temp2=temp1.split(' ')
            dataset.append(temp2)
        for i in range(0,len(dataset)):
            for j in range(k):
                dataset[i].append(float(dataset[i][j]))
            del(dataset[i][0:k])
        return dataset
    infile='F:pycharmh5py_torchhdf5_format\test.txt'
    k=6
    infile=np.array(loadDatadet(infile,k))
    print('dataset=',infile)

      3.执行结果如图所示:

      

  • 相关阅读:
    Qt Creator 安装SDK,在MSVC编译模式下使用CDB调试器
    QString与std::string的相互转换
    白话代码中的复杂度分析-大O复杂度表示法 时间,空间复杂度分析 最好,最坏,平均复杂度
    QT 如何使窗体初始最大化
    make_ext4fs
    Qt5.4中遇到找不到头文件<QApplication>等
    MariaDB 数据库的备份
    MariaDB -- 数据类型
    MariaDB基础操作
    keepalived + lvs 网站高可用集群
  • 原文地址:https://www.cnblogs.com/hxing/p/10113829.html
Copyright © 2011-2022 走看看