相关疑难解决方法(0)

如何在C中获取文件大小?

可能重复:
如何确定C中文件的大小?

如何找出用C语言编写的应用程序打开的文件大小?我想知道大小,因为我想把加载文件的内容放入一个我分配的字符串中malloc().只是写作malloc(10000*sizeof(char));是恕我直言,一个坏主意.

c size file

364
推荐指数
7
解决办法
75万
查看次数

c ++中的base64解码片段

任何人都有c ++中免费提供的base64解码代码片段?

c++ base64

58
推荐指数
8
解决办法
10万
查看次数

在C++中以高性能将double转换为char*

我的应用程序需要将double值转换为char*以写入仅接受字符的管道.通常的方法是使用sprintf()函数或使用iomanip.h头文件中的ostringstream.

事实证明,这两者都有非常糟糕的表现.我的应用程序需要经常进行此转换,以至于它成为主要的瓶颈.

我还可以使用其他功能吗?我可以使用什么逻辑来编写有效的转换函数?到目前为止,我唯一想到的就是使用除法和修改操作来获取每个数字,并将这些数字附加到char*以获得整个double值.这似乎不是一个好方法,并且本身可能会有糟糕的表现.

提前感谢您的想法.

编辑:关于如何使用char*存在一些混淆.char*将是写入管道的fwrite函数的参数.

c++ performance type-conversion

25
推荐指数
3
解决办法
4万
查看次数

使用OpenSSL进行Base64编码和解码

我一直在试图找出base64解码和编码的openssl文档.我在下面找到了一些代码片段

#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <openssl/bio.h>
#include <openssl/buffer.h>

char *base64(const unsigned char *input, int length)
{
  BIO *bmem, *b64;
  BUF_MEM *bptr;

  b64 = BIO_new(BIO_f_base64());
  bmem = BIO_new(BIO_s_mem());
  b64 = BIO_push(b64, bmem);
  BIO_write(b64, input, length);
  BIO_flush(b64);
  BIO_get_mem_ptr(b64, &bptr);

  char *buff = (char *)malloc(bptr->length);
  memcpy(buff, bptr->data, bptr->length-1);
  buff[bptr->length-1] = 0;

  BIO_free_all(b64);

  return buff;
}

char *decode64(unsigned char *input, int length)
{
  BIO *b64, *bmem;

  char *buffer = (char *)malloc(length);
  memset(buffer, 0, length);

  b64 = BIO_new(BIO_f_base64());
  bmem = BIO_new_mem_buf(input, length); …
Run Code Online (Sandbox Code Playgroud)

c++ base64 openssl

20
推荐指数
6
解决办法
5万
查看次数

如何在C中获得PHP标准函数?

如何从C应用程序中调用PHP函数?

例:

include <php.h>

int main()
{
  return json_encode(""); // This is a PHP function coming from php.h
}
Run Code Online (Sandbox Code Playgroud)

注意: PHP函数集是非常管理和组织的,我只想在我的C应用程序中拥有该逻辑,所有内容都按需组织.这就是我在PHP语言中找到的美.

php c

7
推荐指数
1
解决办法
1008
查看次数

C++ 位图转 Base64

我有以下代码来创建位图:

//raw data
PBYTE firstPixel = (PBYTE)((PBYTE)AnsiBdbRecord) + sizeof(WINBIO_BDB_ANSI_381_RECORD);

// declare other bmp structures
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER info;
RGBQUAD rq[256];
// create the grayscale palette 
for (int i = 0; i<256; i++)
{
    rq[i].rgbBlue = i;
    rq[i].rgbGreen = i;
    rq[i].rgbRed = i;
    rq[i].rgbReserved = 0;
}
//RGBQUAD bl = { 0,0,0,0 };  //black color
//RGBQUAD wh = { 0xff,0xff,0xff,0xff }; // white color

// andinitialize them to zero
memset(&bmfh, 0, sizeof(BITMAPFILEHEADER));
memset(&info, 0, sizeof(BITMAPINFOHEADER));

// fill the fileheader with data …
Run Code Online (Sandbox Code Playgroud)

c++ bitmap biometrics

6
推荐指数
1
解决办法
3136
查看次数

C++解压缩gzip字节数组

这是完整的情况:我正在.tmx使用瓷砖的地图阅读器处理文件.大多数时候,tile都保存在一个base64字符串中,该字符串包含一个压缩的字节数组gzip.现在我可以读取压缩字节数组,但我不知道如何解压缩它.我读了一些关于zlib和的文档boost,但两者都是关于文件流而且非常复杂......

我对数据压缩领域很陌生,所以如果有人知道某种解决方案或一些有用的文档,我真的很感兴趣.

c++ compression gzip inflate

5
推荐指数
1
解决办法
6431
查看次数

C ++ OpenCV:将mat转换为base64,反之亦然

无论如何,都可以将opencv mat对象转换为base64。

我使用下面的URL进行base64编码和解码:

http://www.adp-gmbh.ch/cpp/common/base64.html

下面是代码片段:

const unsigned char * inBuffer = reinterpret_cast(image.data);

c++ opencv image-processing

4
推荐指数
2
解决办法
9209
查看次数

如何使用FromBase64String创建长度为16的byte []

我需要创建一个byte[]长度为16.(一个字节数组,有128位用作AES加密中的密钥).

以下是有效的字符串

"AAECAwQFBgcICQoLDA0ODw=="
Run Code Online (Sandbox Code Playgroud)

确定字符串是否为128位的算法是什么?或者是反复试验是创建这种128位字符串的唯一方法吗?

    static void Main(string[] args)
    {
        string firstString = "AAECAwQFBgcICQoLDA0ODw=="; //String Length = 24
        string secondString = "ABCDEFGHIJKLMNOPQRSTUVWX"; //String Length = 24
        int test = secondString.Length;

        byte[] firstByteArray = Convert.FromBase64String((firstString));
        byte[] secondByteArray = Convert.FromBase64String((secondString));

        int firstLength = firstByteArray.Length;
        int secondLength = secondByteArray.Length;


        Console.WriteLine("First Length: " + firstLength.ToString());
        Console.WriteLine("Second Length: " + secondLength.ToString());

        Console.ReadLine();
    }
Run Code Online (Sandbox Code Playgroud)

调查结果:

对于256位,我们需要256/6 = 42.66个字符.这四舍五入到43个字符.[使其可被4整除=]

对于512位,我们需要512/6 = 85.33个字符.这是四舍五入到86 char.[使其可被4整除==]

对于128位,我们需要128/6 = 21.33个字符.这被舍入到22个字符.[使其可被4整除==]

.net c# encryption base64 cryptography

3
推荐指数
1
解决办法
5044
查看次数

将 Base64 解码的字符串转换为 unsigned char[32]

我正在使用ed25519-donna进行数字签名。

密钥是unsigned char[32],签名是unsigned char[64]

我找到了这个 base64 编码,但它只能解码为string.

我已经找到并尝试了很多技术,但仍然不确定如何转换。

如何将 Base64 解码后的数据string转换为unsigned char[32]?

c++ base64 type-conversion ed25519-donna

3
推荐指数
1
解决办法
3891
查看次数

使用十六进制值对 std::string 进行编码

我的应用程序需要在 std::string 中编码和传输一些十六进制值。所以我就这样做。

static string printHex(const string& str)
{
    stringstream ss;
    ss << "[ " << hex;
    for (int i = 0; i < str.size(); i++)
    {
        ss << (((uint32_t)str[i] )& 0xFF) << " ";
    }
    ss << "]" << dec;

    return ss.str();
}

int main()
{
    char ptr[] = {0xff, 0x00, 0x4d, 0xff, 0xdd};// <--see here, 0x00 is the issue.
    string str(ptr);
    cout << printHex(str) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

显然,该字符串仅获取 0x00 以内的值,其余数据都会丢失。如果没有 0x00,它将适用于任何值。但我也需要 0x00。请提出一个解决方案。谢谢您的帮助。

c++

1
推荐指数
1
解决办法
2076
查看次数

使用openssl在stdout RSA加密文本上打印

我正在使用这部分代码

char encrypted_text[1024];
RSA_public_encrypt(sizeof(message), message, encrypted_text, rsa, RSA_PKCS1_OAEP_PADDING);
printf("encrypted text: %s\n", encrypted_text);
Run Code Online (Sandbox Code Playgroud)

而optput是这样的:

v0 뷾s E Z N\ 6~ : & / 〜ͯ L d Ǡ E [ h U.vH2F1Qb^) g ,a Ҩ xvU| > ˢ=W ő \ g

有可能消除 符号??

c unix openssl rsa

-1
推荐指数
1
解决办法
668
查看次数