bigendian littleendian

原创 2007年09月30日 17:49:00
    一个16位整数,由两个字节组成。内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,称为little-endian字节序,另一种方法是将高序字节存储在起始地址,称为big-endian字节序。术语little-endian和big-endian表示多字节的哪一端存储在该值的起始地址。
 
例如:0x0102   little-endian: A    0x02    A+1  0x01
                           big-endian:   A    0x01    A+1  0x02
测试程序:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    short int a = 0x1234;
    char *p = (char *)&a;
    
    printf("p=%#hhx/n",*p);

    if(*p == 0x34)
        printf("Little endian /n");
    else if(*p == 0x12)
        printf("Big endian /n");
    else
        printf("Unknow endian /n");

    return 0;
}
转换(用宏)
typedef unsigned int u32;
typedef unsigned short u16;
#define BSWAP_16(x) /
         
( (((x) & 0x00ff) << 8 ) | /
    
(((x) & 0xff00) >> 8 ) /
    
)
#define BSWAP_32(x) /
     
(u32) ( (( ((u32)(x)) & 0xff000000 ) >> 24) | /
                    
(( ((u32)(x)) & 0x00ff0000 ) >> 8 ) | /
    
(( ((u32)(x)) & 0x0000ff00 ) << 8 ) | /
    
(( ((u32)(x)) & 0x000000ff ) << 24) /
              
)
 

大端BigEndian、小端LittleEndian与字符集编码

BigEndian(大端):低字节在高内存地址 LittleEndian(小端):低字节在低内存地址也就是看低字节在高内存地址还是低内存地址,也就是看低字节在前还是高字节在前,低字节在前自然是小端,...
  • joenqc
  • joenqc
  • 2017年05月04日 18:34
  • 514

python3大端、小端(Big Endian、LittleEndian)编码

大端模式,小端模式指的是数据在内存地址中存储的顺序不同。一般操作系统都是小端,而通讯协议是大端的,所以我们在传输数据时,需要将数据转码。今天在调接口时,就遇了一个这样的接口: 将双字节文字使用Bi...

在tcp/ip协议中以BigEndian方式的编码与解码

package com.tcpip; /** * 在tcp/ip协议中以BigEndian方式的编码与解码 * @author * */ public class BruteForceCo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bigendian littleendian
举报原因:
原因补充:

(最多只允许输入30个字)