Преобразование base64 в шестнадцатеричный код с пробелом в результате [закрыто]Python

Программы на Python
Anonymous
Преобразование base64 в шестнадцатеричный код с пробелом в результате [закрыто]

Сообщение Anonymous »

У меня есть датчик, который создает необработанные шестнадцатеричные данные, которые выглядят следующим образом:
DD 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2FE 0 0 0 1F4 1FA 123 141 F0E F56 F56 12 0 154B 0 264 F53 2FC6 A2D CEC
C8 F 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2BC 0 0 0 1F4 10F 123 141 DD8 E2B E2B 10 0 1500 0 264 840B 2FC6 A2D CEF
C2 B 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2BC 0 10A 0 1F4 19B 122 141 DA4 12AA 149E 13 0 155C 0 264 B92 2FC6 A2D CEF
BD E 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2FE 0 0 0 1F4 123 123 140 D5D DD3 461C 13 0 1530 2 264 34C1 2FBC A2B CEB
D4 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 362 0 0 0 1F4 1 122 141 E66 ED3 ED3 8 0 150D 3 265 4E39 2FBC A2B CEB

Система сбора данных, на которую я не имею никакого влияния, хранит эти данные в формате base64.
Чтение этих данных в моем скрипте Python 3 создает кадр данных pandas, содержащий эти данные base64. Моя цель — преобразовать эти данные base64b обратно в исходный шестнадцатеричный формат. Код, который я использую для этого, дает результат, отличный от того, который я ожидаю. В других вопросах я не нашел решения.
Пример кода, который создает фрейм данных с примерами данных base64, как я читаю его в своем скрипте:
import pandas as pd
import base64

# A simple example dataframe with time, UTCs, and one column of additional imaginary data
df = pd.DataFrame([['2024-06-21 06:22:38', 22958 ,'IEUgMyAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDMyMCAwIDAgMCAxRjQgMjg3IEU1IDE4MiAxOTYgMUE1IDFBNSAwIDAgQSAxIDI2QiBEMTIyIHhkYXRhNTEwMiAyRDAgNzkwICAxMDk4'],
['2024-06-21 06:22:39', 22959 ,'IDExIDMgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzNjIgMCAwIDAgMUY0IDI3MyBFNSAxODIgMUQwIDFFMCAxRTAgMCAwIEIgMSAyNkIgQTgyQSB4ZGF0YTUxMDIgMkQwIDc5MCAgMTA5OA=='],
['2024-06-21 06:22:40', 22960 ,'IDEwIDEgMCAwIDEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzMjAgMCAwIDAgMUY0IDI3RCBFNSAxODMgMUY1IDRCOCA1MUIgMSAwIDcgMCAyNkIgQjUwRSB4ZGF0YTUxMDIgMkQxIDc4RCAgMTA5Mg=='],
['2024-06-21 06:22:41', 22961 ,'IEQgNCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDJGRSAwIDAgMCAxRjQgMjkgRTUgMTgyIDFBRSAxQzAgMUMwIDAgMCA4IDIgMjZCIDJCRTQgeGRhdGE1MTAyIDJEMSA3OEQgIDEwOTI='],
['2024-06-21 06:22:42', 22962 ,'IEQgMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDNBNSAwIDAgMCAxRjQgMSBFNSAxODIgMTUzIDE1RSAxNUUgMCAwIDkgMCAyNkIgNjFBMiB4ZGF0YTUxMDIgMkQxIDc4RCAgMTA5Mg=='],
],
columns=['time', 'UTCs', 'Parameter1'])
print(df)

Я преобразую Параметр 1 в шестнадцатеричный код, назвав его Параметр1_hex:
df['Parameter1_hex'] = df['Parameter1'].apply(lambda x: base64.b64decode(x).hex())
df['Parameter1_hex']

Результат:
0 2045203320302030203020302030203020302030203020...
1 2031312033203020302030203020302030203020302030...
2 2031302031203020302031203020302030203020302030...
3 2044203420302030203020302030203020302030203020...
4 2044203220302030203020302030203020302030203020...
Name: Parameter1_hex, dtype: object

Как вернуть данные в формате Base64 в исходный формат? Что мне не хватает?
Я пытаюсь предоставить воспроизводимый пример без панд и оставив шестнадцатеричный(), но в результате получается

TypeError: аргумент должен быть байтовым объектом или строкой ASCII, а не «списком»

import base64

# A simple example data set with time, UTCs, and one column of additional imaginary data
data =[
['2024-06-21 06:22:38', 22958 ,'IEUgMyAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDMyMCAwIDAgMCAxRjQgMjg3IEU1IDE4MiAxOTYgMUE1IDFBNSAwIDAgQSAxIDI2QiBEMTIyIHhkYXRhNTEwMiAyRDAgNzkwICAxMDk4'],
['2024-06-21 06:22:39', 22959 ,'IDExIDMgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzNjIgMCAwIDAgMUY0IDI3MyBFNSAxODIgMUQwIDFFMCAxRTAgMCAwIEIgMSAyNkIgQTgyQSB4ZGF0YTUxMDIgMkQwIDc5MCAgMTA5OA=='],
['2024-06-21 06:22:40', 22960 ,'IDEwIDEgMCAwIDEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzMjAgMCAwIDAgMUY0IDI3RCBFNSAxODMgMUY1IDRCOCA1MUIgMSAwIDcgMCAyNkIgQjUwRSB4ZGF0YTUxMDIgMkQxIDc4RCAgMTA5Mg=='],
['2024-06-21 06:22:41', 22961 ,'IEQgNCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDJGRSAwIDAgMCAxRjQgMjkgRTUgMTgyIDFBRSAxQzAgMUMwIDAgMCA4IDIgMjZCIDJCRTQgeGRhdGE1MTAyIDJEMSA3OEQgIDEwOTI='],
['2024-06-21 06:22:42', 22962 ,'IEQgMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDNBNSAwIDAgMCAxRjQgMSBFNSAxODIgMTUzIDE1RSAxNUUgMCAwIDkgMCAyNkIgNjFBMiB4ZGF0YTUxMDIgMkQxIDc4RCAgMTA5Mg=='],
]

hex_data = base64.b64decode([row[2] for row in data])
print(hex_data)

Вернуться в «Python»