首页 文章
  • 1 votes
     answers
     views

    大端系统上的地址运算符

    很多人都知道以下示例来确定系统是小端还是大端: #include <stdio.h> int main() { unsigned int i = 1; char *c = (char*)&i; if (*c) printf("Little endian"); else printf(...
  • 2 votes
     answers
     views

    关于jffs2dump的错误将JFFS2文件系统更改为little-endian文件

    我有一个JFFS2文件系统,它是一个大端 . 我的电脑:x86 Linux,小端 . 我使用jffs2dump将我的JFFS2文件更改为little-endian . 例如:(#jffs2dump -c -v -b -e B070.jffs2 B070.w) . 出现了一些错误: │0x00b3ffd8,0x0000处的错误位掩码│错误的位掩码位于0x00b3ffdc,0x0000│0x00b3f...
  • 3 votes
     answers
     views

    签名整数的Endian转换

    我通过UDP接收大端数据并将其转换为小端 . 源代码表示整数是有符号的,但是当我交换有符号整数的字节(特别是16位)时,我会得到不切实际的值 . 当我将它们作为无符号整数交换时,我得到了我的期望 . 我想源文档可能不正确,实际上是发送无符号的16位整数 . 但为什么会这么重要?这些值都应该是正的,并且在16位INT_MAX下,因此溢出不应该是一个问题 . 我唯一能想到的是(1)文档错误和(2)当我...
  • 11 votes
     answers
     views

    有人可以为我解释这个“endian-ness”功能吗?

    编写程序以确定计算机是big-endian还是little-endian . bool endianness() { int i = 1; char *ptr; ptr = (char*) &i; return (*ptr); } 所以我有上面的功能 . 我真的不明白 . ptr =(char *)&i,我认为这意味着指向我所在地址的字符的指针...
  • 0 votes
     answers
     views

    尝试使用十六进制输入来使用小端和大端

    我试图用这两个原型编写C函数: int extract_little (char* str, int ofset, int n); int extract_big(char* str, int ofset, int n); 现在一般的想法是我需要从地址str ofset开始以两种格式返回一个n字节整数 . 附: Ofset还没有做任何事情,我计划(试图)通过一个偏移来改变内存,一旦我弄清楚小端,...
  • 0 votes
     answers
     views

    在big-endian和little-endian中对齐混合位字段和结构字段

    根据我以前的经验,我理解以下内容: // if i have structure in big-endian system, look like this: typedef struct { unsigned long a: t1, b: t2, c: t3, d: t4, //... z: t...
  • 0 votes
     answers
     views

    c,big-endian系统中的十六进制表示

    结果是什么: int x = 0x00000001; int y = 0x80000000; 在大端系统? 我的目标是定义一个具有第一个(内存中)位集的int,无论它是最重要的还是最不重要的 . 我知道,对于little-endian系统,x会满足这个要求,但在大端系统中它仍然是正确的吗? 我很确定以下内容适用于两个系统: char c[4] = {0x80, 0, 0, 0}; int x =...
  • 2 votes
     answers
     views

    如何在Little Endian与Big Endian架构中存储数组值

    我正在询问如何判断数组中的一个元素何时完成,另一个元素何时以endian体系结构开始 . 我有2个数组,其中long的大小为8,char的大小为1 long x[2] = {0x012345,0xFEDC}; char c[12] = {'a','b','c','d','e','f','g','h','0','1','2','3'}; 我想知道如果我们考虑x从内存地址 0x100 开始并且c从内存...
  • 0 votes
     answers
     views

    用于将big endian转换为little endian的C / C代码

    我曾经遇到过一段似乎有用的代码,但是我很难过为什么会这么做 . 基本上,有一个char缓冲区,在某个位置,包含一个4字节的int存储为big-endian . 代码将提取整数并将其存储为本机小端 . 这是一个简短的例子: char test[8] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; char *ptr = test; int32...
  • -1 votes
     answers
     views

    使用来自二进制(十六进制)文件的fread交换字节

    我有二进制文件(十六进制表示)与以下输入, 0000 1900 我正在使用以下代码将数据读入整数 . fp = fopen(argv[1], "rb"); if (fp == NULL){ printf("Error - Failed opening the file\n"); return EXIT_FAILURE...
  • 1 votes
     answers
     views

    Linux x86 CPU指令布局混乱

    在x86中,我理解多字节对象存储在内存中的小端样式 . 现在一般来说,当谈到CPU指令时,OPCODE确定指令的目的,数据/存储器地址可以遵循其编码格式的操作码 . 我的理解是指令的操作码部分应该是最重要的字节,因此出现在任何给定指令编码表示的最高地址 . 有人可以解释这个x86 linux gdb示例中的内存布局吗?我认为操作码0xb8会出现在更高的地址,因为它是最重要的字节 . (gdb) d...
  • 2 votes
     answers
     views

    是火星MIPS模拟器Big或Little Endian

    我必须确定火星模拟器是作为家庭作业的大或小端,这看起来非常简单,但我有一些问题 . 首先我尝试在内存中存储4个字节,内存为0,0,0,1,在内存中显示为0x01000000,因此,按相反的顺序,这似乎表示模拟器是小端,但是,当我加载4时字节作为寄存器的整数,寄存器中出现的内容再次为0x01000000,据我所知,如果它是小端,将加载的是0x00000001 . 此外,当使用.word 1存储4个字...
  • 168 votes
     answers
     views

    如何在C中的big-endian和little-endian值之间进行转换?

    如何在C中的big-endian和little-endian值之间进行转换? 编辑:为清楚起见,我必须将二进制数据(双精度浮点值和32位和64位整数)从一个CPU架构转换为另一个CPU架构 . 这不涉及网络,因此ntoh()和类似的功能在这里不起作用 . 编辑#2:我接受的答案直接适用于我正在编制的编译器(这就是我选择它的原因) . 但是,这里有其他非常好的,更便携的答案 .
  • 55 votes
     answers
     views

    C#little endian还是big endian?

    在允许我们通过UDP / IP控制它的硬件文档中,我发现了以下片段: 在此通信协议中,DWORD是4字节数据,WORD是2字节数据,BYTE是单字节数据 . 存储格式为小端,即4字节(32位)数据存储为:d7-d0,d15-d8,d23-d16,d31-d24;双字节(16位)数据存储为:d7-d0,d15-d8 . 我想知道这是如何转换为C#的?在发送之前我是否必须转换内容?例如,如果我想发...
  • 88 votes
     answers
     views

    Java是以小端还是大端读取整数?

    我问,因为我正在从C进程向Java发送字节流 . 在C端,32位整数的LSB是第一个字节,MSB是第4个字节 . 所以我的问题是:在Java端,当我们读取从C进程发送的字节时,Java端的endian是什么? 一个后续问题:如果Java端的endian与发送的端不一样,我怎样才能在它们之间进行转换?
  • -1 votes
     answers
     views

    Big endian和Little endian表示

    如果我写下面的内容 section .data align 4 X: db 1 Y: dw 5 Z: db 0x11 section .text add dword [X], 0xAA000101 我试图理解big endian和little endian表示之间的差异,我不明白每个表示的每个变量的值是多少?他们会一样吗?
  • -1 votes
     answers
     views

    小端和大端值

    我目前正在使用计算机系统,并且不知道发生了什么 . 我的作业中有一个问题: 在字节可寻址系统中,字节序列跟随地址 0x10010000 0x23, 0x1a, 0x25, 0xaf, 0xef, 0xa5, 0x5a, 0x61, 0x6f, 0x73 . 如果系统使用48位寄存器并支持加载加载命令' ld48bit <rt>, <address> '从内存加载48位信息...
  • 2 votes
     answers
     views

    使用OpenSSL解密Windows Crypto API RSA密文

    我创建了一个C程序,用RSA 2048密钥加密一些字节 . 程序的输出是256字节,一切似乎都正常 . 但是我完全无法弄清楚如何用openssl解密它 . 我被告知我可能需要反转字节顺序,因此它变成大端,但它似乎没有帮助 . (我假设颠倒字节顺序意味着将1F 02 C8转换为F1 20 8C等) 我主要是从openssl得到以下错误 . openssl rsautl -in output.bin...
  • 0 votes
     answers
     views

    从文件中反转长读?

    我正在尝试从C中的二进制文件中读取一个长的(带符号的,4个字节) . 我主要担心的是:可移植性(不同平台上的longs是不同的大小),当你从二进制文件中读取w / std :: ifstream时,它会颠倒字节顺序(到我的机器的字节顺序) . 我理解像unsigned int这样的数据类型,你可以简单地使用按位运算符并移位和AND每个字节在从文件读取后反转字节顺序 . 我只是不确定我会为此做些什么...
  • 4 votes
     answers
     views

    C端文件的Big Endian和Little Endian

    我正在尝试编写一些独立于处理器的代码来编写大端的一些文件 . 我有一个下面的代码示例,我不明白为什么它不起作用 . 它应该做的就是让字节以大端顺序逐个存储数据的每个字节 . 在我的实际程序中,我会将单个字节写入文件,因此无论处理器架构如何,我都会在文件中获得相同的字节顺序 . #include <iostream> int main (int argc, char * const a...
  • 2 votes
     answers
     views

    Oracle RMAN big-endian到little-endian

    我有一个在Solaris SPARC盒上创建的Oracle RMAN备份,因此是big-endian格式 . 我希望将此备份恢复到基于Windows x86-64的计算机,但由于字节顺序问题而遇到了障碍 . 我在维基百科http://en.wikipedia.org/wiki/Endianness#Endianness_in_files_and_byte_swap上读过,不可能对文件的字节顺序进行...
  • 15 votes
     answers
     views

    从二进制文件读取时将大端转换为小端[重复]

    这个问题在这里已有答案: How do I convert between big-endian and little-endian values in C++? 28个答案 我一直在寻找如何将big-endian转换为little-endians . 但我找不到任何可以解决我问题的好处 . 似乎有很多方法可以进行这种转换 . 无论如何,以下代码在big-endian系统中正常工作 . 但是我...
  • 6 votes
     answers
     views

    Big Endian和Little Endian

    给定的是字节可寻址计算机的内存快照 . 执行指令 lw $16, 24($17) 后如果机器是大端和Little Endian,将被加载到寄存器 $16 中 . 注册 $17 包含 200 . 根据我的说法,无论Little Endian还是Big Endian,都会从内存 (224-227) 复制四个字节,然后如果机器是Big Endian,那么它们将被原样复制到寄存器中 . 如果机器是Li...
  • 12 votes
     answers
     views

    是什么让系统成为little-endian或big-endian?

    我对系统/ cpu /程序的字节顺序感到困惑 .所以我必须提出一些问题才能让我明白 . 问题1 如果我只在我的C程序中使用 char 类型: void main() { char c = 'A'; char* s = "XYZ"; } 然后将此程序编译为名为 a.out 的可执行二进制文件 .a.out 可以在little-endian和big-end...
  • 0 votes
     answers
     views

    big endian vs little endian

    我在64位英特尔处理器上工作...我正在学习大端和小端,我理解的是这些是一个字内的字节排序,这样在64位数据中,msb将具有大端格式的最低地址和小端形式的最高地址...现在我有一个问题: 我写了this code确定我的处理器是小端还是大端...我输入 0102030405060708 (this is in hex) 并希望得到 08 和 07 和 06 以及...和 01 作为答案 但取而代...
  • 2 votes
     answers
     views

    如何将短语和单词转换为MD5哈希?

    任何人都可以向我解释如何将“我想买些牛奶”之类的短语转换成MD5吗?我读过关于MD5的维基百科文章,但是给出的解释超出了我的理解范围: “MD5将可变长度消息处理为128位的固定长度输出 . 输入消息被分解为512位块(16个32位小端整数)的块” “十六个32位小端整数”对我来说已经很难了 . 我检查了关于小端的维基文章并且不了解 . 但是,Wiki文章中的一些短语及其MD5哈希的例子非常好...
  • 1 votes
     answers
     views

    如何在C中将64位整数转换为大端字节数组

    (这是Padding the message in SHA256的后续问题 . ) (我正在尝试在C中实现SHA-256哈希函数 . 我这样做纯粹是为了娱乐和学习目的 . ) 我的字符串 message 长度为 message_length . 我在字符串后面加了 1 位后跟 0 s,这样字符串的长度现在是448位mod 512位 . 我现在需要将带有 message_length 的字符串作...
  • 19 votes
     answers
     views

    将Little Endian转换为Big Endian

    我只是想问一下我的方法是否正确,从小端到大端转换,只是为了确保我理解差异 . 我有一个存储在little-endian中的数字,这里是数字的二进制和十六进制表示: ‭0001 0010 0011 0100 0101 0110 0111 1000‬ ‭12345678‬ 在big-endian格式中,我认为应该交换字节,如下所示: 1000 0111 0110 0101 0100 0011 00...
  • 0 votes
     answers
     views

    当使用带小端或大端的反向数组时

    如果我有字节数组: byte [] a=new byte [4]{0,0,0,1}; 这个数据序列0001是Little endian还是big endian?当我需要反转阵列时 与小端或大端? 我的电脑架构是Littleendian
  • 3 votes
     answers
     views

    big endian和little endian值是否可移植?

    你好,我有一个小端dout和大端的小dout我知道这个问题已经问过n次,但我无法弄清楚以下几点 让我们把int i = 10它作为 00000000 00000000 00000000 00001010 存储在二进制文件中,如下所示: - 00000000 |00000000 |00000000 |00001010 // In case of little endian MSB--------...

热门问题