小编bot*_*ius的帖子

jpeg(jfif)图像的大小

我需要找到jpeg(jfif)图像的大小.图像不会保存为独立文件,因此我无法使用GetFileSize或任何其他此类API(图像放置在流中,除了通常的jpeg/jfif标头之外不存在其他标头(s) ).

我做了一些研究,发现JPEG图像由不同的部分组成,每个部分以帧标记(0xFF; XX)开始,以及该帧的大小.使用此信息,我能够从文件中解析大量信息.

问题是我无法找到压缩数据的大小,因为似乎压缩数据没有帧标记.此外,似乎压缩数据遵循SOS(FF; DA)标记,并且图像以图像结束(EOI)(FF; D9)标记结束.

实现这一目标的一种方法是从一个字节到另一个字节搜索EOI标记,但我认为压缩数据可能包含这个字节组合,对吧?

您是否知道一种简单而正确的方法来查找图像的总大小?(我非常喜欢一些没有任何外部库的代码/想法:))?

基本上,我需要图像开始(SOI-FFE0)和图像结束(EOI-FFD9)之间的距离(以字节为单位).

size jpeg

30
推荐指数
1
解决办法
2万
查看次数

格式化输出,以便Intellij Idea显示两个文本的差异

我希望能够在日志中打印一条消息,其中intellij想法将提供一种比较两个对象(字符串)的好方法.对于失败的junit断言记录的错误消息,这会自动发生:

assertEquals("some\nString", "another\nString");

=>
org.junit.ComparisonFailure:  <Click to see difference>
    at org.junit.Assert.assertEquals(Assert.java:123)
    at org.junit.Assert.assertEquals(Assert.java:145)
    at com.something.DummyTest.testDummy(DummyTest.java:89)

<Click to see difference>条目实际上显示为Intellij Idea输出窗口中的链接.当您单击该链接时,将打开一个比较窗口,其中显示了两个值(就像您比较两个文件一样).

简单地抛出异常是不可接受的,因为我想记录多个对象进行比较.我已经尝试过记录文本,但我无法说服想法比较这两个文本.

intellij-idea

19
推荐指数
2
解决办法
3573
查看次数

用于测试整数类型是有符号还是无符号的宏

您将如何编写(在C/C++中)一个宏来测试整数类型(作为参数给出)是签名还是未签名?


      #define is_this_type_signed (my_type) ...

c c++

17
推荐指数
2
解决办法
6177
查看次数

Visual Studio调试器提示和技巧(适用于C/C++项目)

我对有关在Visual Studio的调试器中调试C/C++项目的提示和技巧感兴趣.我最近发现如果你有一个指向某种数据类型的指针,让我们说char*ptr,那么你可以使用如下语法在监视窗口中将它看作一个数组:

ptr,10

这将显示ptr地址中的前10个元素,其方式与定义如下所示的方式相同:

char ptr[10];

您对Visual Studio调试器有哪些其他提示和技巧?

PS:我希望这个问题还没有讨论过.如果你找到类似的帖子,请告诉我.

debugging visual-studio

15
推荐指数
4
解决办法
6699
查看次数

从MASM/MASM64在编译时检测体系结构

如果目标体系结构是I386或AMD64,如何在编译时从ASM源文件中检测到?

我使用masm(ml.exe)/ masm64(ml64.exe)来组装file32.asm和file64.asm.创建单个文件file.asm会很好,它应该包含file32.asm或file64.asm,具体取决于体系结构.理想情况下,我希望能够写出如下内容:

IFDEF amd64
include file64.asm
ELSE
include file32.asm
ENDIF

此外,如果需要,我可以使用不同的命令行选项运行ml.exe和ml64.exe.

谢谢!

assembly x86-64 masm cpu-architecture masm32

6
推荐指数
2
解决办法
2543
查看次数

枚举成员的字符串化

我需要将枚举成员(其值,而不是标识符)转换为字符串.我尝试了以下,它适用于MACRO(TYPE_A),但不适用于枚举值(typeA).在我看来,这有点奇怪.

你知道怎么做吗?


#define _tostr(a) #a
#define tostr(a) _tostr(a)

typedef enum _SPECIAL_FOLDER_ID {
    typeA = 3,
    typeB = 4,
} SPECIAL_FOLDER_ID;

#define TYPE_A 3

int main() {
    //this is working, but the information is a macro (TYPE_A)
    printf("The string is " tostr(TYPE_A) ".\n");

    //this is not working for typeA (defined in an enumeration)
    printf("The string is " tostr(typeA) ".\n");
    return 0;
}


输出是:

The string is 3.
The string is typeA.

我需要以某种方式修改代码,以便输出的第二行是"字符串是3".

谢谢!

PS:我不想使用printf打印该值.我需要一个包含该值的静态字符串.我只使用printf来测试结果......

c macros

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