【tcl脚本】改变输出字符格式
2023-09-11 14:20:13 时间
需求:
原list输出格式
0x00 0x50 0x01 0x03 0x04 0x02 0x21 0x57 0x01 0x00 0x05 0x0B 0x03 0x13 0x00 0x01
要求list输出格式为
list21 is : 04030150
list22 is : 01572102
list23 is : 030b0500
list24 is : 00010013
list20 is : 04030150 01572102 030b0500 00010013
思路
1. 去除0x方式显示;
2. 四字节连成一个string,string再转化成list;
3.不够四字节前面补零。
代码
#!/usr/bin/env tclsh set mReply {0x00 0x50 0x01 0x03 0x04 0x02 0x21 0x57 0x01 0x00 0x05 0x0B 0x03 0x13 0x00 0x01} set len [llength $mReply] for {set i 1} {$i<=[expr $len-1]} {incr i} { set mBit [format "%02x" [lindex $mReply $i]] set mReply [lreplace $mReply $i $i $mBit] } set lenTemp [expr {$len-1}] while {1} { set lenFlag [expr {$lenTemp%4}] if {$lenFlag!=0} { set mReply [linsert $mReply end 00] incr len set lenTemp [expr {$len-1}] } else { break; } } set flag 0 for {set j 1} {$j<=[expr {$len-1}]} {set j [expr {$j+4}]} { incr flag for {set k 0} {$k<=3} {incr k} { set list2$flag [list [append var$flag [lindex $mReply [expr {$flag*4-$k}]]]] } } puts "list21 is : $list21" puts "list22 is : $list22" puts "list23 is : $list23" puts "list24 is : $list24" set list20 [concat $list21 $list22 $list23 $list24] puts "list20 is : $list20"
不得不感叹,tcl对于处理字符串和list来说真的是太方便了!继续加油!
相关文章
- 通过PHP current()函数获取未知字符键名数组第一个元素的值
- 各种字符编码方式详解及由来(ANSI,UNICODE,UTF-8,GB2312,GBK)
- 正则去除 除了中文、数字、字母之外的字符
- php imagecreatetruecolor输出字符符或验证码
- java中JTextPane使输出字符到指定的宽度换行,并将垂直滚动条的位置移动到输出的最后位置
- 1.常用字符对象方法
- LeetCode: 3_Longest Substring Without Repeating Characters | 求没有重复字符的最长子串的长度 | Medium
- SAP ABAP字符和字符串变量隐式转换的一些规则
- ZZNUOJ_C语言1131:最常用字符(附完整源码)
- Hadoop快速入门——第三章、MapReduce案例(字符统计)
- 【华为机试真题详解】字符统计及重排
- 习题 6.12 有一行电文,已按下面规律译成密码:A-Z a-z即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。
- C#获取单个字符的拼音声母
- 高速理解掌握node.js 字符编码,确码过程 以及base64编解码原理
- 易飞-凭证打印异常(字符中含有空格,自己主动分行导致显示异常)
- 至少有 K 个重复字符的最长子串——分治算法,不太容易想到
- YAML语法字符
- FPGA-LCD字符显示驱动