通过AI把你的工具转换成了Python脚本,就不限平台了 ![]()
import sys
def main():
if len(sys.argv) < 2 or len(sys.argv) > 6:
print("使用方法:smc_tool [Func] [Cmd] [M/S] [R/W] [Parameter]")
print("例如:smc_tool 7 3 0 1 0")
print("以上参数均为十六进制数,也可以反推smc命令的offset")
print("例如:smc_tool 469765376 或 smc_tool 0x1c000d00")
print("位布局:Func(6位) | Command(16位) | MS(1位) | RW(1位) | Parameter(8位)")
return -1
if len(sys.argv) == 2:
input_str = sys.argv[1]
hex_num = int(input_str, 0) # 自动识别进制
print(f"Func : {(hex_num >> 26) & 0b111111:x}")
print(f"Command : {(hex_num >> 10) & 0xffff:x}")
print(f"M/S : {(hex_num >> 9) & 0b1:x}")
print(f"R/W : {(hex_num >> 8) & 0b1:x}")
print(f"Parameter: {hex_num & 0xff:x}")
elif len(sys.argv) == 6:
try:
nums = [int(arg, 16) for arg in sys.argv[1:]]
for num in nums:
print(f"{num:02x} ", end="")
result = (
(nums[0] & 0b111111) << 26 |
(nums[1] & 0xffff) << 10 |
(nums[2] & 0b1) << 9 |
(nums[3] & 0b1) << 8 |
(nums[4] & 0xff)
)
print(f"\n转换结果为:\n{result} \n或 \n0x{result:x}")
except ValueError:
print("\n参数解析错误")
return -1
else:
print("参数错误")
return -1
if __name__ == "__main__":
main()
