数组上的 MD5,array[0..63, uint8] 到 cstring 的转换
MD5 on an array, array[0..63, uint8] to cstring conversion
我正在尝试对数组 [0..63, uint8] 执行 md5Update,但我得到了
Error: type mismatch: got (MD5Context, array[0..63, uint8], int)
but expected one of:
md5.md5Update(c: var MD5Context, input: cstring, len: int)
它似乎需要一个 ctring 输入而不是一个缓冲区。那么如何对二进制数据执行 md5Update() 呢? (我不想要最后一个空字符...)
您可以使用 cast[cstring](addr myBuf)
将缓冲区转换为 cstring
。请注意,您还必须传递 var MD5Context
,这意味着它必须是可变的(在 var
内定义或作为 var
参数传递)。代码示例:
const arr = [0'u8, 0, 0]
var ctx: MD5Context
md5Init(ctx)
md5Update(ctx, cast[cstring](unsafeAddr arr), sizeof(arr))
var digest: MD5Digest
md5Final(ctx, digest)
我正在尝试对数组 [0..63, uint8] 执行 md5Update,但我得到了
Error: type mismatch: got (MD5Context, array[0..63, uint8], int)
but expected one of:
md5.md5Update(c: var MD5Context, input: cstring, len: int)
它似乎需要一个 ctring 输入而不是一个缓冲区。那么如何对二进制数据执行 md5Update() 呢? (我不想要最后一个空字符...)
您可以使用 cast[cstring](addr myBuf)
将缓冲区转换为 cstring
。请注意,您还必须传递 var MD5Context
,这意味着它必须是可变的(在 var
内定义或作为 var
参数传递)。代码示例:
const arr = [0'u8, 0, 0]
var ctx: MD5Context
md5Init(ctx)
md5Update(ctx, cast[cstring](unsafeAddr arr), sizeof(arr))
var digest: MD5Digest
md5Final(ctx, digest)