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 に答える