小编Cha*_*den的帖子

为什么fread会搞乱我的字节顺序?

我试图解析一个bmp文件,fread()当我开始解析时,它会反转我的字节顺序.

typedef struct{
    short magic_number;
    int file_size;
    short reserved_bytes[2];
    int data_offset;
}BMPHeader;
    ...
BMPHeader header;
    ...
Run Code Online (Sandbox Code Playgroud)

十六进制数据是42 4D 36 00 03 00 00 00 00 00 36 00 00 00; 我正在将十六进制数据加载到struct中fread(&header,14,1,fileIn);

我的问题是幻数应该是0x424d //'BM'fread()它会翻转字节0x4d42 // 'MB'

为什么fread()会这样做,我该如何解决它;

编辑:如果我不够具体,我需要将整个十六进制数据块读入结构,而不仅仅是幻数.我只选择了幻数作为例子.

c struct bmp fread

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

自定义引导加载程序问题

我正在尝试为Hobby OS编写一个引导加载程序并让它运行良好.没什么特别的,只打印一行文字:

BITS 16
ORG 0

start: jmp main


OEM         db "Test OS "           
BytesPerSector:     DW 512
SectorsPerCluster:  DB 1
ReservedSectors:    DW 1
NumberOfFATs:   DB 2
RootEntries:    DW 224
TotalSectors:   DW 2880
Media:      DB 0xf8  
SectorsPerFAT:  DW 9
SectorsPerTrack:    DW 18
HeadsPerCylinder:   DW 2
HiddenSectors:  DD 0
TotalSectorsBig:    DD 0
DriveNumber:        DB 0
Unused:         DB 0
ExtBootSignature:   DB 0x29
SerialNumber:   DD 0xa0a1a2a3
VolumeLabel:    DB "HOBBY  OS  "
FileSystem:         DB "FAT12   "



main:
    ;Adjust code Seg.
    cli
    mov ax, 0x07c0
    mov …
Run Code Online (Sandbox Code Playgroud)

x86 assembly disk utility bootloader

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

设置鼠标位置

我需要能够将鼠标位置设置到屏幕/窗口的中间位置.我怎样才能做到这一点?

macos cocoa objective-c cursor

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

Scalacheck收缩

我对ScalaCheck(和Scala完全)相当新,所以这可能是一个相当简单的解决方案

我正在使用ScalaCheck为AST生成测试并验证编写器/解析器是否正常工作.我有这些文件

AST.scala

package com.test

object Operator extends Enumeration {
  val Add, Subtract, Multiply, Divide = Value
}

sealed trait AST
case class Operation(left: AST, op: Operator.Value, right: AST) extends AST
case class Literal(value: Int) extends AST
Run Code Online (Sandbox Code Playgroud)

GenOperation.scala

import com.test.{AST, Literal}

import org.scalacheck._
import Shrink._
import Prop._
import Arbitrary.arbitrary    

object GenLiteral extends Properties("AST::Literal") {
  property("Verify parse/write") = forAll(genLiteral){ (node) =>
    //  val string_version = node.writeToString() // AST -> String
    //  val result = Parse(string_version) // String -> AST
    true
  } …
Run Code Online (Sandbox Code Playgroud)

scala scalacheck

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

theEvent charactersIgnoringModifiers - 获取没有修饰符的字符

我试图在我的游戏中实现具有两种模式的键盘类.游戏模式接受使用小写未修改键的输入(未修改意义,如果我用移位键入'0',它仍然返回'0'而不是')').我已经跟踪了它,只要使用类的charactersIgnoringModifiers方法,NSEvent但是这个方法排除了除shift键之外的所有修饰键.

cocoa shift keydown modifier-key

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

为什么裸 Rust 函数中有额外的 ASM 指令?

我在 Rust 中包装了一个低级别的 ABI,利用了naked函数特性。这是我的代码和相关的反汇编

#![feature(asm)]
#![feature(naked_functions)]

struct MyStruct {
    someVar: i64, // not important
                  // ...
}

impl MyStruct {
    #[naked]
    extern "C" fn wrap(&self) {
        unsafe {
            asm!("NOP" :::: "volatile");
            // not sure if the volatile option is needed, but I
            // figured it wouldn't hurt
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用LLDB反汇编:

ABIWrap`ABIWrap::{{impl}}::wrap:
  * 0x100001310 <+0>:  movq   %rdi, -0x10(%rbp)
  * 0x100001314 <+4>:  movq   %rsi, -0x8(%rbp)
  * 0x100001318 <+8>:  movq   -0x10(%rbp), %rax
  * 0x10000131c <+12>: movq   -0x8(%rbp), %rcx
  * 0x100001320 …
Run Code Online (Sandbox Code Playgroud)

x86 abi wrapper rust

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

自定义字符串文字

出于好奇,我想知道不同的文件如何能够分配某些符号以将它们常规的 c 字符串文字更改为其他文字。

例如...

在 Objective-C 中,NSString 文字可以写成@"..."

在 C++ 中(我认为),C++ 字符串文字是这样写的S"..."

在wchar库中,wchar_t文字是writtelL"..."

谁能告诉我如何做一个像 MyClass 文字这样的字符串#"..."

谢谢

c++ objective-c cstring wchar string-literals

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

将模板缓冲区可视化为纹理

我正在尝试将模板缓冲区放入纹理中以便在延迟渲染器中使用.

我正在使用其他颜色和深度附件,glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textures[color1], 0);结果是正确的. 没有模板缓冲区的正确渲染

但是,当我尝试将模板缓冲区附加到纹理时, glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT ,GL_TEXTURE_2D, textures[stencil], 0);我得到一个乱码的结果,好像FBO没有清除它的缓冲区.

不正确,乱码渲染

我不知道问题是什么.我怀疑这是设置模板纹理的问题......

//Stencil Texture Initialization

glBindTexture(GL_TEXTURE_2D, textures[stencil]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

glTexImage2D( GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8, 512, 512, 0, GL_STENCIL_INDEX, GL_BYTE, 0);
Run Code Online (Sandbox Code Playgroud)

我的设置中没有任何错误代码,所以我不知道问题是什么.

编辑:也许我没有正确地这样做.如果有人知道如何将模板缓冲区写入纹理,我真的不在乎我是否写了不同的鳕鱼.我只需要一种有效的方法.

opengl macos textures stencil-buffer deferred-rendering

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

Deflate:在没有zlib(或任何其他库)的情况下解压缩PNG

前几天,我想我会更多地了解图像压缩.我查看了.png及其各自的压缩算法,我希望能够在没有任何其他库的情况下解压缩文件,以便我了解有关数据压缩的更多信息.我很难找到关于如何在没有第三方库的情况下解压缩png的信息,并且希望有人能够指出我正确的方向或简要解释它.

c png deflate

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

使用描述打印结构

我想知道是否可以使用descriptionCocoa框架中的函数来记录a的内容struct.例如:

    typedef struct {float a,b,c;}list;
    list testlist = {1.0,2.5,3.9};
    NSLog(@"%@",testlist); //--> 1.0,2.5,3.9
Run Code Online (Sandbox Code Playgroud)

cocoa struct objective-c nslog

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