Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取两个字节的字符串长度_Python - Fatal编程技术网

Python 获取两个字节的字符串长度

Python 获取两个字节的字符串长度,python,Python,如何获取字符串的两字节长度: 例如: 长度为3的“foo”将给出:0x0和0x3。 长度为300的'bar'*100将给出:0x1和0x2c。 在通过TCP套接字发送字符串之前,我需要将这两个字节作为字节而不是ascii前缀。接收器使用这两个字节作为接收字符串的长度。您需要的是非常直接的。此函数返回两个字节的元组以编码字符串长度。最重要的字节是第一个 代码: 测试代码: 我建议您使用socket模块中的htons和ntohs函数,使其能够跨平台移植,并在通过线路发送整数时使用big-endian

如何获取字符串的两字节长度:

例如:

长度为3的“foo”将给出:0x0和0x3。 长度为300的'bar'*100将给出:0x1和0x2c。
在通过TCP套接字发送字符串之前,我需要将这两个字节作为字节而不是ascii前缀。接收器使用这两个字节作为接收字符串的长度。

您需要的是非常直接的。此函数返回两个字节的元组以编码字符串长度。最重要的字节是第一个

代码:

测试代码:


我建议您使用socket模块中的htons和ntohs函数,使其能够跨平台移植,并在通过线路发送整数时使用big-endian网络字节顺序

n = socket.htons(len("bar"*100))
byte1, byte2 = n >> 8, n & 0xff

请再解释一下。现在还不清楚你想要什么。我解释了我要做的事情。似乎很容易理解:每个字符串必须以2个字节开头,告诉我们字符串的总长度。但是,语言是什么?我以为标签告诉了它是什么语言。在本例中,Python.len返回一个Python int对象。这里没有平台问题,因此htons调用在这种情况下没有价值。
test_strings = (
    ('foo', (0, 3)),
    ('bar', (0, 3)),
    ('foobar', (0, 6)),
    ('bar'*100, (1, 44)),
)

# check all of the test cases
for test_str, expected_result in test_strings:
    assert expected_result == strlen_as_bytes(test_str)
n = socket.htons(len("bar"*100))
byte1, byte2 = n >> 8, n & 0xff