Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
C style strings
#1
I have a Python program that communicates with a C program over a socket connection. The C program sends a "message" which contains floats and ints and some strings as binary data. Strings are a fixed number of bytes in the message even though the length of the string sent may differ, The C program is rather sloppy about sending strings, so the bytes for 'Hello' may look like b'Hello\x00\xf1\x03' when received by the Python program.

Is there a an existing solution for converting this into a Python string that only contains the decoded bytes[0:4]? Currently I am doing this:
    @staticmethod
    def unpackstr(buf, size=None):
        """Unpack string from buf with max length of size"""
        if size is None:
            size = len(buf)
        length = buf.find(b'\00')
        if length < 0:
            length = size
        else:
            length = min(length, size)
        return buf[:length].decode('UTF-8')
Reply
#2
Nothing wrong with that, but you can just split() on the null.

>>> b'Hello\x00\xf1\x03'
b'Hello\x00\xf1\x03'
>>> b'Hello\x00\xf1\x03'.split(b'\x00')[0]
b'Hello'
>>> b'No null'.split(b'\x00')[0]
b'No null'
Reply
#3
also, might want to look at: https://www.geeksforgeeks.org/passing-nu...libraries/
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Trying to understand strings and lists of strings Konstantin23 2 696 Aug-06-2023, 11:42 AM
Last Post: deanhystad
  Splitting strings in list of strings jesse68 3 1,702 Mar-02-2022, 05:15 PM
Last Post: DeaD_EyE
  Finding multiple strings between the two same strings Slither 1 2,478 Jun-05-2019, 09:02 PM
Last Post: Yoriz
  lists, strings, and byte strings Skaperen 2 4,181 Mar-02-2018, 02:12 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020