hxing

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) = \'\x02P\xff\xff\'       //这里是十六进制的可见字符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)=\'\x02P\xff\xff\'

      再利用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)=\'\x02P\xff\xff\'

    再利用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(\'\n\')
        temp2=temp1.split(\'\t\')
        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:\pycharm\h5py_torch\hdf5_format\\test.txt\'
k=6
infile=np.array(loadDatadet(infile,k))
print(\'dataset=\',infile)

  3.执行结果如图所示:

  

分类:

技术点:

相关文章:

  • 2021-05-22
  • 2023-04-06
  • 2021-10-28
  • 2022-02-27
  • 2021-05-22
  • 2021-12-22
  • 2021-04-25
猜你喜欢
  • 2022-01-09
  • 2021-09-05
  • 2021-10-18
  • 2021-10-18
  • 2021-11-24
  • 2021-06-10
  • 2022-12-23
相关资源
相似解决方案