第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從此數(shù)據(jù)類型中提取十六進制值?

如何從此數(shù)據(jù)類型中提取十六進制值?

慕尼黑的夜晚無繁華 2023-03-30 09:53:05
我正在使用 Pythoncantools庫從 CAN dbc 文件中提取消息,返回的數(shù)據(jù)類型如下所示:message('Message_10', 0x146, False, 8, None),我需要提取第二個值,0x146并且消息名稱的長度可能會發(fā)生變化,因此標準字符串切片將無法始終如一地工作。我的第一個想法是轉(zhuǎn)換message('Message_10', 0x146, False, 8, None),成一個字符串,然后刪除所有不以開頭的內(nèi)容0x,但我懷疑有更好的方法。這樣做的目的是從 DBC 文件中提取所有 CAN ID,并創(chuàng)建一個字典,每個罐 ID 號作為鍵。然后監(jiān)控 CAN 總線并使用與 CAN 總線上每個 CAN ID 關(guān)聯(lián)的數(shù)據(jù)有效負載更新目錄中的每個值。這是我的代碼片段,我最初嘗試只提取消息名稱,這很有效,但我需要消息 ID,0x146作為我字典中的鍵,以便在我查看總線上的傳入時進行比較任何人都知道如何做到這一點?import cantools db = cantools.database.load_file('C:\\Users\\Tim\\Desktop\\dbc_file.dbc')def can_table(db):    messages = []    #pprint.pprint(db.messages)    for msg in range(0, len(db.messages)):        x = str(db.messages[msg])        x = x[7:]  # Remove "message"        x = x.replace('(', '').replace(')', '').replace('\'', '')        x = x.split(', ') # Split into list        messages.append(x[0])  # First element is list is the message name    message_table = {}    # Populate values as None in dictionary     for i in messages:        message_table[i]=None    #pprint.pprint(message_table)    return message_tablex之后可以str()調(diào)用的示例:"message('Message_3', 0x143, False, 8, None)""message('Message_2', 0x142, False, 8, None)""message('Message', 0x141, False, 8, None)""message('Message_with_long_name', 0x201, False, 8, 'comment that explains what this message does')"
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經(jīng)驗 獲得超8個贊

第二個值是 frame_id。只是做msg.frame_id。不要將其轉(zhuǎn)換為字符串。

for?msg?in?db.messages:?
???print(msg.frame_id)

從 cantools 代碼中,您可以看到使用該方法將消息轉(zhuǎn)換為字符串__repr__

cantools.Message.__repr__

def?__repr__(self):????return?"message('{}',?0x{:x},?{},?{},?{})".format(
????????self._name,
????????self._frame_id,
????????self._is_extended_frame,
????????self._length,?
???????????????"'"?+?self._comment?+?"'"?if?self._comment?is?not?None?else?None)


查看完整回答
反對 回復 2023-03-30
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號