- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想读取前4096个字节作为图像文件的十六进制(来自dd
加密设备的luks
)。因此,我首先使用unsigned long
进行了测试,其值范围从0 to 18446744073709551615
开始。但是用这个代码
int main() {
unsigned long c;
FILE *fp = fopen("C:\\image.dd", "r");
if (fp == NULL) {
fprintf(stderr, "Can't read file");
return 0;
}
while (!feof(fp)){ // while not end of file
c=fgetc(fp); // get a character/byte from the file
printf("%02x ",c); // and show it in hex format
}
fclose(fp);
return 0;
}
我将得到以下输出:
4c 55 4b 53 ba be 00 01 61 65 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 78 74 73 2d 70 6c 61 69 6e 36 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 73 68 61 32 35 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 40 31 ea 2e 93 28 55 cd 52 b6 c4 51 1e 0f b1 25 0e 2d 65 72 85 f2 41 97 b3 9b 76 ae 07 e5 53 ac 02 21 b4 ffffffff
我的
image.dd
的前512个字节如下所示:
4C 55 4B 53 BA BE 00 01 61 65 73 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 78 74 73 2D 70 6C 61 69
6E 36 34 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 73 68 61 32 35 36 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 40
31 EA 2E 93 28 55 CD 52 B6 C4 51 1E 0F B1 25 0E
2D 65 72 85 F2 41 97 B3 9B 76 AE 07 E5 53 AC 02
21 B4 1A 6F 0C 8D E2 08 62 91 4D 22 3D CA A2 51
19 0A 74 29 00 01 06 4B 32 38 38 33 34 64 34 66
2D 36 62 32 64 2D 34 37 33 62 2D 62 34 63 65 2D
33 31 38 32 36 65 64 61 65 39 63 39 00 00 00 00
00 AC 71 F3 00 10 64 B8 37 E9 07 F3 84 51 CF 51
23 E8 F2 8E 31 57 FE 2C DE D5 70 76 F2 1B B0 F8
95 33 A6 BB E4 4F 91 A8 00 00 00 08 00 00 0F A0
00 00 DE AD 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 02 00 00 00 0F A0
00 00 DE AD 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 03 F8 00 00 0F A0
00 00 DE AD 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 05 F0 00 00 0F A0
00 00 DE AD 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 07 E8 00 00 0F A0
00 00 DE AD 00 00 00 00 00 00 00 00 00 00 00 00
所以这很奇怪。为什么要这样做呢?现在为什么要用
unsigned long
以及值
ffffffff
呢?
unsigned long
或类似
unsigned int
。但是问题是一样的。
最佳答案
您有四个错误。
首先,您在打印数据时不会检查读取是否成功。
检查应该在c=fgetc(fp);
和printf("%02x ",c);
之间
其次,您将错误的类型传递给printf()
并调用未定义的行为。
格式%02X
需要unsigned int
。 (根据this answer,在适当范围内的int
也可以)
第三,以文本模式打开二进制文件。
因此,在0x1A
(EOF)字节处停止读取。
要通过fopen()
以二进制模式打开文件,应将b
添加到模式字符串中。
第四,您不将读取限制为前4096个字节。
请注意, fgetc()
返回int
,因此使用unsigned long
是多余的。
固定代码:
#include <stdio.h>
int main() {
int i; // read size counter
int c; // use proper type
FILE *fp = fopen("C:\\image.dd", "rb"); // open file in binary mode
if (fp == NULL) {
fprintf(stderr, "Can't read file");
return 0;
}
for (i = 0; i < 4096; i++) { // while not end of size to read
c=fgetc(fp); // get a character/byte from the file
if (c == EOF) break; // stop at end of file
printf("%02x ",c); // and show it in hex format
}
fclose(fp);
return 0;
}
关于c++ - 使用CPP获取dd图像的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63033355/
我需要使用正则表达式验证格式为 dd/mm/yyyy 的日期字符串。 此正则表达式验证 dd/mm/yyyy,但不验证 31/02/4500 等无效日期: ^(0?[1-9]|[12][0-9]|3[
我正在开发一个小型应用程序,其中我的表有一列,我必须在其中查找所有具有此格式值的记录 'dd/dd/dd' where d 是数字(1-9)。 例如,我想查找具有这种格式的值的数据'18/32/23'
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我想要 dd.d.dd.ddddd 或 dd.d.d.ddddd 类型的数据的正则表达式,每个 d 代表 0-9 之间的数字,正则表达式应代表这两种格式。我正在使用 java 脚本。我尝试了以下代码。
我已经搜索了该网站,但没有找到接近我需要的答案。基本上我的日期正确显示为“2013-05-09”,但我想要的是“2013 年 3 月 19 日”或使其更好“3 月 19 日, 2013 年”。 请向我
我需要使用 C# 更改日期字符串的格式 来自:“06/16/2010”或“16/06/2010” 至:“2010-06-16” 你能帮我实现这个吗 谢谢 最佳答案 如果您已经将它作为 DateTime
我需要转换当前日期,其格式为: MM|dd|yy --- 12|09|11 我需要将格式转换为: MM/dd/yy --12/09/11 当前系统日期分隔符是:
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Extending JavaScript's Date.parse to allow for DD/MM/Y
我在 Access VBA 中使用 Date 语句编码了一些东西。直到本月初它都运行良好,但现在我看到日期已从 dd/mm/yyyy 自动更改格式至 mm/dd/yyyy .有没有其他人遇到过同样的问
我有一个类似“Apr 17 09:32:01”的日期格式,但我想获取数字中的月份... 是否可以使用logstash进行转换? 我尝试使用日期过滤器,但它似乎无法将日期从一种格式转换为另一种格式。 我
这个问题已经有答案了: How to convert string "2011-11-29 12:34:25" to date in "dd-MM-yyyy" format in JAVA (6 个回
我在前端使用了日期选择器,格式为mm/dd/yyyy,并且我在mysql中选择了日期数据类型,然后如何编写代码将其从yyyy/dd/mm转换为mm/使用 jsp 的 dd/yyy。我已经尝试过代码但不
我想将日期字段(格式:dd-mm-yyyy)转换为数据库日期格式。如果输入日期格式等于 dd-mm-yyyy 格式,则将日期转换为 yyyy-mm-dd 格式,否则返回 false。 function
我正在尝试在 JavaScript 中将日期格式从 mm-dd-yyyy 转换为 yyyy-mm-dd 。我尝试下面的代码获取无效日期。 var convertJSDate = function(da
使用 NSDateFormatter 解析日期。下面的日期是 2013 年 5 月 2 日。我得到不同的结果(如下所示)取决于我是否在 dateFormat 字符串中使用“DD”和“dd” NSStr
在 DateFormatter 中使用 DD 和 dd 有什么区别?搜索时,我没有看到明显的差异。一些日期格式文档显示“DD”和“dd”,有些则没有。 我想了解其中的区别以及为什么它会产生下面评论中显
我在表中有一个以MM/DD/YYYY格式存储的日期列。我必须选择相同的日期并以YYYY-MM-DD格式(即XSD日期格式)存储在另一个表中。但是我做不到。我正在使用此查询: select to_dat
我陷入了这样一种情况:我通过“LOAD DATA LOCAL INFILE”从 CSV 文件读取数据并将其存储在 Mysql 表中。 我的表格中的日期列是字符串类型。 如果我的日期格式为'yy/dd/
我有一个带有两个日期字段的 mysql 表。 Startdate 和 Enddate 是字段我需要使用字段在前端显示日期,例如“2014 年 10 月 24 日至 26 日” 我怎样才能做到这一点?
我有 HTML 显示用户对私有(private)用户配置文件页面上表单中的字段的响应。表单上的字段是有条件的,因此其中许多字段永远不会呈现给用户。 HTML 由系统输出,从未呈现给用户的下拉字段会收到
我是一名优秀的程序员,十分优秀!