93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 
 | ||
| 
 | ||
| 
 | ||
| -- 2023.6.29
 | ||
| -- 使用算数运算代替位运算
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| module = {}
 | ||
| 
 | ||
| function module:print_t ( t )  
 | ||
|     local print_r_cache={}
 | ||
|     local function sub_print_r(t,indent)
 | ||
|         if (print_r_cache[tostring(t)]) then
 | ||
|             print(indent.."*"..tostring(t))
 | ||
|         else
 | ||
|             print_r_cache[tostring(t)]=true
 | ||
|             if (type(t)=="table") then
 | ||
|                 for pos,val in pairs(t) do
 | ||
|                     if (type(val)=="table") then
 | ||
|                         print(indent.."["..pos.."] => "..tostring(t).." {")
 | ||
|                         sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
 | ||
|                         print(indent..string.rep(" ",string.len(pos)+6).."}")
 | ||
|                     elseif (type(val)=="string") then
 | ||
|                         print(indent.."["..pos..'] => "'..val..'"')
 | ||
|                     else
 | ||
|                         print(indent.."["..pos.."] => "..tostring(val))
 | ||
|                     end
 | ||
|                 end
 | ||
|             else
 | ||
|                 print(indent..tostring(t))
 | ||
|             end
 | ||
|         end
 | ||
|     end
 | ||
|     if (type(t)=="table") then
 | ||
|         print(tostring(t).." {")
 | ||
|         sub_print_r(t,"  ")
 | ||
|         print("}")
 | ||
|     else
 | ||
|         sub_print_r(t,"  ")
 | ||
|     end
 | ||
|     print()
 | ||
| end
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| function byte_to_hex(byte,size)
 | ||
|     local str_table="0123456789ABCDEF"
 | ||
|     local str_ret=""
 | ||
|     if(size==2) then
 | ||
|         str_ret=string.char(
 | ||
|             -- 右移12位,//4096
 | ||
|             string.byte( str_table,(math.floor(byte/4096)%16)+1),
 | ||
|             string.byte( str_table,(math.floor(byte/256)%16)+1),
 | ||
|             string.byte( str_table,(math.floor(byte/16)%16)+1),
 | ||
|             string.byte(str_table,(byte%16)+1))
 | ||
|     else
 | ||
|         str_ret=string.char(string.byte(str_table,math.floor((byte%256)/16)+1),string.byte(str_table,(byte%256)%16+1))
 | ||
|     end
 | ||
|     return str_ret
 | ||
| end
 | ||
| 
 | ||
| -- function byte_to_num(byte)
 | ||
| --     local str_ret=""
 | ||
| --     while true do
 | ||
| 
 | ||
| 
 | ||
| -- 打印数组
 | ||
| function module:print_a ( a,size ,fmt)  
 | ||
|     local str=""
 | ||
|     if(a==nil) then return end
 | ||
|     if(size==nil) then size=1 end
 | ||
|     for pos,val in pairs(a) do
 | ||
|         str=str..byte_to_hex(val,size)..", "
 | ||
|     end
 | ||
|     print(str)
 | ||
| end
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| function module:__tostring()
 | ||
|     return "print table package"
 | ||
|  end
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| return module
 | 
