将unsigned int格式的HEX转换为字符串
Convert unsigned int formatted in HEX to string
我正在为我的考试开发hmac-sha1类。当我必须像https://en.wikipedia.org/wiki/Hash-based_message_authentication_code中描述的那样两次应用sha-1时,我遇到了一个问题。
当我对一个字符串应用sha1时,它返回给我一个unsigned int[5]并计算出哈希值。我想把unsigned int[5]转换成char[40]。
例如unsigned int H[5] = { 67452301, EFCDAB89, 98BADCFE, 10325476, C3D2E1F0 };
// char [40] will be "67452301EFCDAB8998BADCFE10325476C3D2E1F0"
所以,我可以将它连接到ipad,然后计算他的哈希值ipad_hash最后计算opad+ipad_hash连接两个字符串
正确吗?
我使用arduino uno,所以"unsigned int"是"unsigned long"。
这是我的测试代码(它是一个混乱,但我会清理它):http://pastebin.com/jfwBxAp1
你可以做
char hash_cstr[41];
sprintf(hash_cstr, "%08lX%08lX%08lX%08lX%08lX", H[0], H[1], H[2], H[3], H[4])
确保分配至少41个字符(40个用于代码,1个用于NULL终止符)。
在格式字符串%08X中,08表示使用0填充到8个字符,因此您可以获得中间字节的前导0,而X表示使用大写字符的十六进制格式。您可以使用小写x表示小写字符。十六进制格式自动假定为无符号。对于64位类型,可以使用lX
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数