新手问题 如何用 socket 发送 16 进制数数组

nameofhsw · 2016年03月22日 · 最后由 nameofhsw 回复于 2016年03月22日 · 2379 次阅读

一个简单的 TCPclient 程序,但是想要发送的数据是 16 进制数组成的数组,而不是字符串。 写了个程序,但是发出去的内容打印出来是 “48\n49\n50\n” 变成了长度是 9 的字符串了。我希望是对方能收到 3 个字节的 hex 数据 0x30,0x31,0x32 请问有哪位知道怎么写才对嘛?

require 'pp'
require 'socket'

hostname = '192.168.81.137'
port = 65101

s = TCPSocket.open(hostname,port)

str = "30 31 32"
arr_str = str.split(" ")
arr_hex = []
arr_str.each do|str|
    arr_hex.push(str.hex)
end
p arr_hex
s.puts(arr_hex)
s.close

目测这样就可以了,没有测试

require 'socket'

hostname = '192.168.81.137'
port = 65101

s = TCPSocket.open(hostname,port)
s.write [0x30, 0x31, 0x32].pack('ccc')
s.close

#2 楼 @nameofhsw

TCPSocket 的祖先应该是 IO,所以就有write方法了

#3 楼 @santochancf 原来是这样。感谢感谢。 ruby 是半吊子

需要 登录 后方可回复, 如果你还没有账号请 注册新账号