标签: binary

传输libcurl后损坏的二进制文件

我正在使用libcurl使用FTP传输二进制文件(.exe),并将其保存到本地文件.问题是文件传输后,它被更改,不再是有效的Win32应用程序,并且不会运行.我是这样做的:

CURL *curl;

curl = curl_easy_init();
    FILE* f = fopen("C:\\blah.exe", "w");

if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.mysite.com");
    curl_easy_setopt(curl, CURLOPT_USERPWD, "blah:blah");
    curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD, CURLFTPMETHOD_SINGLECWD);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &f);
} else {
            fclose(f);
    return CURL_EASY_INIT_FAIL;
}

    fclose(f);
Run Code Online (Sandbox Code Playgroud)

该文件已写入,但比FTP服务器上的文件大.就像我说的,尝试运行它会导致"%1不是有效的Win32应用程序"错误.我忘了设置选项还是什么?

c++ ftp binary libcurl transfer

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

在Java中使用二进制数据手动构造SQL

我有一个手动创建查询的小程序.在伪代码中,它基本上就是这样做的

string[] a = new string[x];
a[0] = "data 1";
a[1] = "data 2";
a[2] = "data 3";
string query = "insert into x (y) values(";
for i {
query += a[i] + ",";
}
query += ");";

我知道这种用法是次优的,我应该在某个时候做一个完整的重写.
现在我需要向a-array添加一些二进制数据.
给定a byte[] b,如何将其添加到查询中?
我没有尝试,但我假设b.toString()或只是query+=b会破坏我的数据?

java mysql binary

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

从二进制文件中读取变量大小的字符串(VB6与C#)

我有一个包含以下内容的二进制文件:

替代文字

以下代码用于在旧的VB6程序中读取此内容:

Private Type tpClient
    Firstname As String
    LastName As String
    Birth As String
    Adres As String
    Geslacht As String
    IDNummer As Long
    SSNummer As String
    DatabaseID As Long
    Telefoon1 As String
    Telefoon2 As String
End Type

Open strFilePath For Random Access Read As #intFileNumber
Get #intFileNumber, 1, ClientData ' ClientData is of type tpClient
Run Code Online (Sandbox Code Playgroud)

现在我想用我的新C#程序来阅读这个:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct PatientStruct
{
    [MarshalAs(UnmanagedType.BStr)]
    public string FirstName;

    [MarshalAs(UnmanagedType.BStr)]
    public string LastName;

    [MarshalAs(UnmanagedType.BStr)]
    public string BirthDate;

    [MarshalAs(UnmanagedType.BStr)]
    public string Address; …
Run Code Online (Sandbox Code Playgroud)

.net c# vb6 binary

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

填充有什么意义?

特别是,我正在OS X上读取Intel 32的Mach-O二进制文件格式.在FAT头之后,在第一个存档的偏移之前有一大堆填充.所有这些填充的重点是什么?

更具体地说,FAT标头和第一个存档(特别是mach_header)之间有超过4000字节的填充.为什么包括所有这些额外的字节?!OS X是否喜欢为所有通用二进制文件添加4 KB?

binary mach-o machine-code universal

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

Xcode构建阶段

嘿,我正在我的应用程序上实现MD5校验和(用于防止二进制破解).我创建了一个命令行工具,它将为二进制文件生成哈希值,并将其添加到.app文件夹中.但是,我没有弄清楚如何将其添加为构建阶段.我没有运气就读过Apple的文档.任何人都可以解释我如何一步一步地做到这一点?

谢谢!

binary xcode checksum md5 build

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

从二进制文件中反向读取WORD?

我有一个结构:

struct JFIF_HEADER
{
    WORD marker[2];        // = 0xFFD8FFE0
    WORD length;           // = 0x0010
    BYTE signature[5];     // = "JFIF\0"
    BYTE versionhi;        // = 1
    BYTE versionlo;        // = 1
    BYTE xyunits;          // = 0
    WORD xdensity;         // = 1
    WORD ydensity;         // = 1
    BYTE thumbnwidth;      // = 0
    BYTE thumbnheight;     // = 0
};
Run Code Online (Sandbox Code Playgroud)

这是我从文件中读取它的方式:

HANDLE file = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ,
                         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
DWORD tmp = 0;
DWORD size = GetFileSize(file, &tmp);
BYTE *DATA = new BYTE[size]; …
Run Code Online (Sandbox Code Playgroud)

c++ binary jpeg

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

在C中读取二进制文件时在数据之间获取零

我有一个二进制数据,我正在使用C程序读入一个长整数数组.

二进制数据的hexdump显示,在前几个数据点之后,它再次在20000十六进制地址之外的位置处开始.hexdump输出如下所示.

0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0020000 0000 0000 0053 0000 0064 0000 006b 0000
0020010 0066 0000 0068 0000 0066 0000 005d 0000
0020020 0087 0000 0059 0000 0062 0000 0066 0000
Run Code Online (Sandbox Code Playgroud)

...等等...但是当我通过典型fread命令将其读入长整数数组'数据'时

fread(data,sizeof(*data),filelength/sizeof(*data),fd);
Run Code Online (Sandbox Code Playgroud)

它填满了我的数据阵列中的所有零,直到它到达20000位置.之后,它正确读取数据.为什么要读取我的文件不存在的区域?或者我如何让它只读取我的文件,而不是文件之间的任何内容?

我知道它看起来像一个微不足道的问题,但即使在谷歌搜索一晚之后我也无法弄明白.任何人都可以建议我在哪里做错了吗?

其他信息:我正在研究GNU/Linux机器.(slax-atma发行版具体).我的C编译器是gcc.

c binary

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

打印这个二进制代码...向后.在C.

#include <stdio.h>
#include <math.h>
/* converts to binary */

int main()
{
    unsigned int decimalNUM = 0;
    printf("Enter a number to be converted to binary.\t");
    scanf("%d", &decimalNUM);
    fflush(stdin);
    baseConv(decimalNUM);
    getchar();
    return 0;
}
baseConv(unsigned int n){
if (n == 0) ;
      while (n > 0){
      printf("%d", n%2);
      n = n >> 1;
              }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我现在知道如何做到这一点,但它向后打印.我该怎么做才能倒车呢?

c binary base

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

二进制字符串(01010 .....)问题

给定一串0和1.如何找到0和1的数量相等的子串的最大长度.

binary

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

解析二进制文件所需的帮助

我正在尝试通过编写C++应用程序与开源程序进行交互,该应用程序可以读取 - 修改 - 编写该程序使用的二进制文件格式.好处是程序是开源的,坏的是它的二进制文件不遵循任何"标准",只是它自己的阅读和保存方式.

这就是程序如何bool在文件中保存变量:

memset(keyword, 0, 100);
sprintf(keyword, "drawbox");
fout.write((char*)keyword, strlen(keyword)+1);
fout.write((char*)&m_drawBox, sizeof(bool));
Run Code Online (Sandbox Code Playgroud)

这是它如何阅读bool:

else if (strcmp(keyword, "drawbox") == 0)
fin.read((char*)&m_drawBox, sizeof(bool));
Run Code Online (Sandbox Code Playgroud)

这部分工作正常,我可以解析它.我也可以像整数一样解析单个变量.

我的问题在于它保存向量或四元数时的部分.

保存矢量position:

memset(keyword, 0, 100);
sprintf(keyword, "position");
fout.write((char*)keyword, strlen(keyword)+1);
fout.write((char*)&m_position, 3*sizeof(float));
Run Code Online (Sandbox Code Playgroud)

阅读矢量position:

fin.read((char*)&m_volMax, 3*sizeof(float));
else if (strcmp(keyword, "position") == 0)
Run Code Online (Sandbox Code Playgroud)

所以这些都是原始源代码的片段.在我的代码中,如果我尝试使用以下内容,我会遇到问题.

以下是我的代码中的部分:

struct Vec
{
    float x,y,z;
};

Vec m_position;

else if (strcmp(keyword, "position") == 0)
    fin.read((char*) &kf.m_position, 3*sizeof(float));
Run Code Online (Sandbox Code Playgroud)

但这不起作用.以下是我从示例文件中获取的值:

m_position x = -1.07374e+008
m_position y = …
Run Code Online (Sandbox Code Playgroud)

c++ binary binaryfiles vector visual-studio-2010

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

标签 统计

binary ×10

c++ ×3

c ×2

.net ×1

base ×1

binaryfiles ×1

build ×1

c# ×1

checksum ×1

ftp ×1

java ×1

jpeg ×1

libcurl ×1

mach-o ×1

machine-code ×1

md5 ×1

mysql ×1

transfer ×1

universal ×1

vb6 ×1

vector ×1

visual-studio-2010 ×1

xcode ×1