家教机 点读机 校园内外 亲子部落 礼物兑换
您的位置: 论坛/校园内外/帖子详情
Hi,您好!|步步高消息(0)
楼主

标题:

[原创]名片文件(LCC)结构,生成自己的名片

1跳转到确定

 总的来说还是很简单的,为了实践我昨晚说的那点,我今晚就做了这个,但是很粗略,因为很急,很赶,明天还读书。

[quote]
字节长       16进制的偏移    描述
char[16] //00 文件头好像可以为空 只是 第4位为总的个数
char[2] //10 职业1商务 2同学 3好友 4同事 5亲戚
char[21] //12 姓名
char[31] //27 手机
char[31] //46 公司
char[31] //65 电话
char[31] //84 email
char[31] //A3 传真
char[32] //C3 qq
char[30] //E1 msn
char[101] //100 爱好
char[21] //165 生日
char[101] //17A 地址
char[301] //1DF 备注
char[21] //30C 职业描述
char[301] //321 头像地址 或者 是头像ID

//44e下一个

//一个人的信息是1086字节,1k左右吧,而名片那个LCC我猜他是规定了最大531k的(543016字节),刚好500个
//((543016 - 16)/ 1086 = 500)
//个名片

//有一点需要注意的是:它新曾的时候是直接复制前一个的所有信息,然后吧主要的位清为00
//因为这个就和bb样,遇到00的时候就是字符串结尾
//在这个上,要是多写了,以后用16进制打开看肯定惨不忍睹 因为很乱。不过这个也是不能避免的啦。
[/quote]

我一个用php写的自己制作名片文件的函数:
[quote]
$fp = fopen('x.lcc', 'wb+');
$offset = 16;
/*
* char[16] //00 文件头好像可以为空 只是 第4位为总的个数
char[2] //10 职业1商务 2同学 3好友 4同事 5亲戚
char[21] //12 姓名
char[31] //27 手机
char[31] //46 公司
char[31] //65 电话
char[31] //84 email
char[31] //A3 传真
char[32] //C3 qq
char[30] //E1 msn
char[101] //100 爱好
char[21] //165 生日
char[101] //17A 地址
char[301] //1DF 备注
char[21] //30C 职业描述
char[301] //321 头像地址 或者 是头像ID */
$content_offset = array
( "profession_ID" =>5,
"name" => 'Wener',
"phone" => 158XXXXX663,
"company" =>'清洁公司',
"telephone" => 3160586,
"email" => '514403150@qq.com',
"fax" => 316XXX6,
"qq" => 514403150,
"msn" => 514403150,
"hobby" => '耍',
"birthday" => '某年某月某日',
"address" => '地球',
"note" => '这不是注释',
"profession_DES" => '描述',
"face" => 5,
);
$count = 0;

fseek( $fp,543015);
fwrite( $fp, chr( 0));


WriteToLCC( $fp, $content_offset,$count++);
WriteToLCC( $fp, $content_offset, $count++);

fseek( $fp,4);
fwrite( $fp, chr( $count));//这里注意,总个数不是用ascii存的,而是2进制存的。
fclose( $fp);

function WriteToLCC( $fp, $data, $count)
{

$content_offset = array
( "profession_ID" => 0,///////////////////////这里的偏移是和上面不一样的,减去了16位的开头
"name" => 2,
"phone" => 0x17,
"company" => 0x36,
"telephone" => 0x55,
"email" => 0x74,
"fax" => 0x93,
"qq" => 0xb3,
"msn" => 0xd1,
"hobby" => 0xf0,
"birthday" => 0x155,
"address" => 0x16a,
"note" => 0x1cf,
"profession_DES" => 0x2fc,
"face" => 0x311,

);
foreach( $content_offset as $k => $v)
{

if( empty( $data[ $k]))
$input = chr( 0);
else
$input = $data[ $k];

fseek( $fp ,$content_offset[ $k] + 1086 * $count + 16);
fwrite( $fp, iconv( 'UTF-8', 'GBK', $input));
}

fseek( $fp,1086 * ( $count + 1) );//返回
}[/quote]
我已经测试过了,能用。欢迎大家移植到其他语言上。

说说过程
我就是先建一x.lcc文件
然后移动指针到543015,输出个空字符,ascii值为0的字符,此时文件长543016.
然后开始写入信息,最后返回到4的位置,写入总的个数。
关键部分已经标出来了。

本来我要做个通讯录的,就是用这个,但是没时间,没时间。我还想把qq上的所有好友整合到这个上面,但是~~没时间没时间!~~
要是大家喜欢做联系下,说下就是了。
相互帮助相互发展嘛。
其实真的很简单,而且都是定长,也不牵扯寻址。

[align=right][color=#000066][此贴子已经被作者于2010-12-28 2:19:41编辑过][/color][/align]
发表于2010-12-28 02:14:00
个性签名这个人很懒,什么也没留下!
楼主
沙发

 自己先捧场。
发表于2010-12-28 02:14:00
发表
个性签名这个人很懒,什么也没留下!
楼主
2楼

 觉得要是这个说简单点,也就是一段段字符串拼凑起来的,不过这些字符串是定长的。睡了 晚安。

发表于2010-12-28 02:34:00
发表
个性签名这个人很懒,什么也没留下!
3楼

 呐,支持个~
发表于2010-12-28 10:29:00
发表
个性签名这个人很懒,什么也没留下!
4楼
发表于2011-01-06 20:40:00
发表
个性签名这个人很懒,什么也没留下!
5楼

辛苦了,楼主
发表于2011-01-08 15:44:00
发表
个性签名这个人很懒,什么也没留下!
  • 1
  • 5回复 共 1页 跳转到 确定