1

我正在使用 TCP/IP 协议设置套接字,并且由于我的接收器正在处理int8u_t我想知道这种方法是否正确。

在连接时,服务器必须向接收者发送一个值,该值mode=int(42)def connectionMade(self). 但我知道会有一些冲突,因为 python 中的普通 int 是 32 位的,而我的接收器只有 8 位,我可以以某种方式转换它或在 int8u 中创建它吗?

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

class TestSocket(Protocol):
        def connectionMade(self):
                mode=int(42)
                self.factory.clients.append(self)
                self.transport.write(mode)
                print "clients are ", self.factory.clients

        def connectionLost(self, reason):
            self.factory.clients.remove(self)

        def dataReceived(self, data):
                #print "data is ", data
                #a = data.split(':')
                print data
                print "-------------------"

        def message(self, message):
                self.transport.write(message + '\n')

factory = Factory()
factory.protocol = TestSocket()
factory.clients = []

reactor.listenTCP(30002, factory)
print "TestSocket server started"
reactor.run()
4

2 回答 2

2

您可以使用numpy

import numpy
mode = numpy.int8(42)  # int8   Byte (-128 to 127)

numpy 您可以在此处找到有关类型和类型之间转换的更多信息。

于 2012-05-01T21:02:18.243 回答
1

使用结构

from struct import *
mode = pack("h", 42) # 'h' == short

编辑:显然你想要pack("I", 42)

于 2012-05-01T21:05:18.087 回答