Mini Kabibi Habibi
--
-- (c) Copyright 1992-2005, ZheJiang Dahua Information Technology Stock CO.LTD.
-- All Rights Reserved
--
-- �� �� ��� utils.lua
-- �� �: LUA�ű��Ĺ���
-- �ļ�¼�� 2005-8-24 ����� <wanghw@dhmail.com> ��ʼ���汾������Ԭ��µĴ������
--
Global = Global or {};
local utils = {};
-- ����������ַ���ת���ɶ�Ӧ�Ķ������
-- params:
-- hexString (string): ���ַ�����ʾ��ʮ��������
-- �� hexString = "0x30,0x31,0x32",��Ӧ�ľ���
-- hexArray = "012"
-- return:
-- ת�����ʮ�������
function utils.str2hex(hexString)
local tmp;
local retStr = "";
for w in string.gfind(hexString, "0x%x+") do
tmp = tonumber(w, 16);
retStr = retStr .. string.char(tmp);
end
return retStr;
end
-- ����ַ��������ַ������16����ת�����ַ���飬
function utils.str2chr(str)
local retStr = "";
-- �����ַ��Ļ�����ת����16����
str = string.gsub(str, "'(.)'+", function(h) return string.format("0x%02X", string.byte(h))end);
-- ��16����ת�����ַ�
for w in string.gfind(str, "(%w+)(,?)") do
retStr = retStr .. string.char(tonumber(w, 16));
end;
--printstr(retStr);
return retStr;
end;
-- ���ַ������ֽ�ת���ɱ����Ҫ��Ϊ������±�ֱ��ʹ�ã�ִ��У�鴦��
function utils.str2table(str)
local RetTable = {};
if string.len(str) <= 0 then
return nil;
end;
str = utils.str2chr(str);
for i = 1, string.len(str) do
RetTable[i] = string.byte(string.sub(str, i, i + 1));
end;
return RetTable;
end;
-- ����������ַ�����ʮ�����Ʒ�ʽ��
-- params:
-- s (string): ����Ĵ������������������\0�ַ�
-- return:
-- None
function utils.hexdump(s,width)
if not width then
width = 20
end
local length = string.len(s);
for i=1,length,width do
local line = "0x" .. string.sub("00000000" .. string.format("%X", i - 1), -9) .. ": ";
for j = 1,width do
if(i + j - 1> length) then
break;
end
line = line .. string.sub( "00" .. string.format("%X ",string.byte(s,i+j - 1)), -3);
end
print(line);
end
end
-- ��ȡ�ڴ���ص���Ϣ,ͨ����ȡ/proc/meminfo��ȡ
-- params:
-- None
-- return:
-- ����ڴ���Ϣ�ı��
function utils.QueryMemInfo()
local lineNo = 0;
local meminfo = {};
if(os.getenv("windir")) then
meminfo.MemTotal = 262144; -- ��ֹ�����
meminfo.MemReservedSize = 24576; -- ��ֹ�����
return meminfo;
end
for line in io.lines("/proc/meminfo") do
lineNo = lineNo + 1;
if(lineNo >3) then
local key,num = string.gfind(line,"(%a+):%s+(%d+)")();
if (key) then
meminfo[key] = num + 0; -- ��Ҫȥ������"+0" ,Ŀ���ǽ��ַ�ת�������
end
end
end
return meminfo;
end
-- �����
-- params:
-- src: Ҫ������Դ�ļ�
-- dst: Ŀ���ļ�
-- return:
-- �����ɹ�����True
-- ʧ�ܷ���False���ϴ�����Ϣ
function utils.CopyFile(src, dst)
local src_file, err = io.open(src, "r");
if(not src_file) then
return false, err;
end
local content = src_file:read("*a");
src_file:close();
local dst_file, err = io.open(dst, "w");
if(not dst_file) then
return false, err;
end
dst_file:write(content);
dst_file:close();
return true;
end
-- �������ַ����д���ʼλ�ÿ�ʼһ�����ȵ��ַ����滻������ַ���
-- params:
-- str (string): ���滻���ַ���
-- replace(string): Ҫ�滻���ַ���
-- startPos(int): Ҫ�滻���ַ����Ŀ�ʼλ��
-- length(int) : Ҫ�滻���ַ����ij���
-- return:
-- �滻����ַ���
function string.replace(str, replaceWith,startPos,length)
if not length then
length = 1;
end
return string.sub(str,1,startPos - 1)
.. replaceWith
.. string.sub(str,startPos + length);
end
Global.Utils = utils;
return utils;