Юлия - чтение UInt32 из массива UInt8 - PullRequest
2 голосов
/ 29 мая 2020

У меня есть массив данных UInt8, который я получил из TCPSocket.

Я хочу читать UInt32s и UInt16s из разных индексов.

Например:

data = UInt8[0xFF, 0x00, 0x00, 0x00, 0xAA, 0x00]

// Something like this:
extracted_UInt32 = data.readUInt32(1) # [1-4]
extracted_UInt16 = data.readUInt16(5) # [5-6]

It в точности как Node.js s Buffer.readUInt16LE(offset): https://nodejs.org/api/buffer.html#buffer_buf_readint16le_offset

Спасибо!

Ответы [ 2 ]

5 голосов
/ 29 мая 2020

Вы можете read данные как заданный тип из буфера:

julia> data = IOBuffer(UInt8[0xFF, 0x00, 0x00, 0x00, 0xAA, 0x00]);

julia> a = read(data, UInt32)
0x000000ff

julia> b = read(data, UInt16)
0x00aa

Вероятно, вы можете сделать это напрямую из сокета TCP, не материализуясь как вектор байтов .

4 голосов
/ 29 мая 2020

Также я нашел переинтерпретировать можно использовать:

data = UInt8[0xFF, 0x00, 0x00, 0x00, 0xAA, 0x00]

a = reinterpret(UInt32, data[1:4])
b = reinterpret(UInt16, data[5:6])
...