You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#处理跑步计时日志:字符串拆分与十六进制转十进制实现

跑步计时日志转换程序优化方案

1. 无效行过滤

直接跳过包含uptime关键字的行,避免处理无用数据:

with open("logfile.txt", "r") as f:
    for line in f:
        line = line.strip()
        if "uptime" in line:
            continue
        # 处理有效行
        process_valid_line(line)

2. 行拆分与字段解析

针对固定格式的有效行,按字符位置直接截取字段(可根据实际日志长度调整索引):

def process_valid_line(line):
    # 提取垫子编号(前4位)
    mat_code = line[:4]
    # 维护垫子编号映射表,可按需扩展
    mat_mapping = {"aaA1": "Mat 1", "bbB2": "Mat 2"}
    mat = mat_mapping.get(mat_code, f"Unknown Mat ({mat_code})")
    
    # 提取十六进制Bib号(示例取第4-16位,可根据实际调整)
    hex_bib = line[4:16]
    bib_num = int(hex_bib, 16)
    # 若需截取特定位(如低16位),改用:bib_num = int(hex_bib[-4:], 16)
    bib = f"Bib {bib_num}"
    
    # 跳过中间4位,提取日期(第20-26位,格式YYMMDD)
    date_str = line[20:26]
    # 动态处理年份,无需硬编码
    from datetime import datetime
    date = datetime.strptime(date_str, "%y%m%d").strftime("%-m/%-d/%y")
    
    # 提取时间(第26-36位),调用你已实现的格式化函数
    time_str = line[26:36]
    formatted_time = your_time_format_function(time_str)
    
    # 提取读取类型(最后2位)
    read_type_code = line[-2:]
    type_mapping = {
        "FS": "First Seen Read",
        "BS": "Best Seen Read",
        "LS": "Last Seen Read"
    }
    read_type = type_mapping.get(read_type_code, f"Unknown Type ({read_type_code})")
    
    # 输出或保存转换结果
    print(f"{mat}, {bib}, {date}, {formatted_time}, {read_type}")

3. 整合你的时间格式化函数

将你单独实现的时间格式化逻辑直接嵌入流程,示例如下:

def your_time_format_function(time_str):
    # 输入1605112664 → 输出16:05:11.2664
    hh = time_str[:2]
    mm = time_str[2:4]
    ss = time_str[4:6]
    ms = time_str[6:]
    return f"{hh}:{mm}:{ss}.{ms}"

将此函数放在process_valid_line之前即可直接调用。

4. 行拆分困难的备用方案

如果日志行不是固定长度,用正则表达式匹配结构:

import re
# 正则匹配有效行结构:4位垫子码+12位十六进制+4位中间码+6位日期+10位时间+2位类型
pattern = r"^([A-Za-z0-9]{4})([0-9A-Fa-f]{12})([A-Za-z0-9]{4})(\d{6})(\d{10})([A-Z]{2})$"
match = re.match(pattern, line)
if match:
    mat_code, hex_bib, _, date_str, time_str, read_type_code = match.groups()
    # 后续处理逻辑同上述固定长度方案

内容的提问来源于stack exchange,提问作者rlandis8yahoocom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:50:23