我需要一个唯一的 ID 用于读入 c++ 程序的文档,该程序将携带到数据库中。无论它所绑定的文档是首先通过程序运行、单独运行还是在一堆其他文档的中间运行,ID 都需要相同。这样我就可以尊重数据库中文档的覆盖。
我考虑使用文档名称的 ASCII 值,例如
员工规格页面.doc 358
但它具有相同的价值
回答警告.doc 358
这意味着当我在程序中运行第二个文档时,它会覆盖第一个文档的存在。
ID 必须是一个数字并且必须是唯一的,但它必须始终可以重新生成,而不必交叉引用数据库本身(因为该程序与数据库导入程序分开运行)
希望有人有一些想法,因为我很难过。
编辑:我尝试使用 MD5 转换“Employee Spec Page.doc”和“Answer Warnings.doc”并得到以下字符表示:
回答警告:2dcb2503c48f5472bfdbafe28d565a9d
员工规格页面:a9be4c1428c11b406072c0bd3dab2dee
但是,当我将 char* 转换为 unsigned int
char* docID = md5.digestString(pDocument->m_csDocumentName.GetBuffer());
pDocument->m_csDocID.Format("%i",(unsigned int)docID);
我得到两者都是:
回答警告:1634456
员工规格页面:1634456
我从这里得到了 md5 类:http: //bobobobo.wordpress.com/2010/10/17/md5-c-implementation/
我究竟做错了什么?我需要它是一个整数,否则我将无法将 ID 存储在数据库中。