Converting a float to bytearray

后端 未结 2 734
有刺的猬
有刺的猬 2021-01-02 07:22

So, what I am trying to do is convert a float to a bytearray but I keep on receiving both no input, and EXTREME slowing/freezing of my computer. My code is

         


        
2条回答
  •  有刺的猬
    2021-01-02 07:40

    It depends what you want, and what you are going to do with it. If all you want is a bytearray then:

    import struct
    
    value = 5.1
    
    ba = bytearray(struct.pack("f", value))  
    

    Where ba is a bytearray. However, if you wish to display the hex values (which I suspect), then:

    print([ "0x%02x" % b for b in ba ])
    

    EDIT:

    This gives (for value 5.1):

    ['0x33', '0x33', '0xa3', '0x40']
    

    However, CPython uses the C type double to store even small floats (there are good reasons for that), so:

    value = 5.1
    ba = bytearray(struct.pack("d", value))   
    print([ "0x%02x" % b for b in ba ])
    

    Gives:

    ['0x66', '0x66', '0x66', '0x66', '0x66', '0x66', '0x14', '0x40']
    

提交回复
热议问题