Convert string to ASCII value python

后端 未结 8 1686
深忆病人
深忆病人 2020-12-07 22:43

How would you convert a string to ASCII values?

For example, \"hi\" would return 104105.

I can individually do ord(\'h\') and ord(\'i\'), but it\'s going to

相关标签:
8条回答
  • 2020-12-07 22:55
    def stringToNumbers(ord(message)):
        return stringToNumbers
        stringToNumbers.append = (ord[0])
        stringToNumbers = ("morocco")
    
    0 讨论(0)
  • 2020-12-07 22:55

    you can actually do it with numpy:

    import numpy as np
    a = np.fromstring('hi', dtype=np.uint8)
    print(a)
    
    0 讨论(0)
  • 2020-12-07 23:00

    If you want your result concatenated, as you show in your question, you could try something like:

    >>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
    '10410110810811132119111114108100'
    
    0 讨论(0)
  • 2020-12-07 23:00

    It is not at all obvious why one would want to concatenate the (decimal) "ascii values". What is certain is that concatenating them without leading zeroes (or some other padding or a delimiter) is useless -- nothing can be reliably recovered from such an output.

    >>> tests = ["hi", "Hi", "HI", '\x0A\x29\x00\x05']
    >>> ["".join("%d" % ord(c) for c in s) for s in tests]
    ['104105', '72105', '7273', '104105']
    

    Note that the first 3 outputs are of different length. Note that the fourth result is the same as the first.

    >>> ["".join("%03d" % ord(c) for c in s) for s in tests]
    ['104105', '072105', '072073', '010041000005']
    >>> [" ".join("%d" % ord(c) for c in s) for s in tests]
    ['104 105', '72 105', '72 73', '10 41 0 5']
    >>> ["".join("%02x" % ord(c) for c in s) for s in tests]
    ['6869', '4869', '4849', '0a290005']
    >>>
    

    Note no such problems.

    0 讨论(0)
  • 2020-12-07 23:04

    If you are using python 3 or above,

    >>> list(bytes(b'test'))
    [116, 101, 115, 116]
    
    0 讨论(0)
  • 2020-12-07 23:07

    Here is a pretty concise way to perform the concatenation:

    >>> s = "hello world"
    >>> ''.join(str(ord(c)) for c in s)
    '10410110810811132119111114108100'
    

    And a sort of fun alternative:

    >>> '%d'*len(s) % tuple(map(ord, s))
    '10410110810811132119111114108100'
    
    0 讨论(0)
提交回复
热议问题