当前位置:  开发笔记 > 编程语言 > 正文

C#问题使用blowfish NET:如何从Uint32 []转换为byte []

如何解决《C#问题使用blowfishNET:如何从Uint32[]转换为byte[]》经验,为你挑选了1个好方法。

在C#中,我使用的是Blowfish.NET 2.1.3的BlowfishECB.cs文件(可以在这里找到)

在C++中,它是未知的,但它是相似的.

在C++中,Initialize(blowfish)过程如下:

void cBlowFish::Initialize(BYTE key[], int keybytes)

在C#中,Initialize(河豚)程序是相同的

public void Initialize(byte[] key, int ofs, int len) 

这就是问题:

这是在C++中初始化密钥的方式

DWORD keyArray[2] = {0}; //declaration
...some code
blowfish.Initialize((LPBYTE)keyArray, 8);

如您所见,密钥是两个DWORDS的数组,总共8个字节.

在C#我声明它,但我收到一个错误

BlowfishECB blowfish = new BlowfishECB();
UInt32[] keyarray = new UInt32[2];
..some code
blowfish.Initialize(keyarray, 0, 8);

错误是:

参数'1':无法从'uint []'转换为'byte []'

我究竟做错了什么?

提前致谢!



1> Reed Copsey..:

您可以使用BitConverter从UInt32获取字节.


为此,您需要在循环中转换每个元素.我会做的事情如下:

private byte[] ConvertFromUInt32Array(UInt32[] array)
{
    List results = new List();
    foreach(UInt32 value in array)
    {
        byte[] converted = BitConverter.GetBytes(value);
        results.AddRange(converted);
    }
    return results.ToArray();
}

private UInt32[] ConvertFromByteArray(byte[] array)
{
    List results = new List();
    for(int i=0;i

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有