相关疑难解决方法(0)

在UTF-16中,UTF-16BE,UTF-16LE,UTF-16的端点是计算机的字节序吗?

UTF-16是一个双字节字符编码.交换两个字节的地址将产生UTF-16BE和UTF-16LE.

但我发现命名的UTF-16编码存在于Ubuntu"gedit"文本编辑器中,以及UTF-16BE和UTF-16LE.使用C测试程序,我发现我的计算机是小端,并且UTF-16被确认为UTF-16LE的相同编码.

另外:在小/大端计算机中有两个字节顺序的值(例如整数).小端计算机将在硬件中产生很少的字节序值(除了Java生成的值,它总是形成一个大端).

虽然文本可以在我的小端计算机中保存为UTF-16LE和UTF-16BE,但字符是一个字节一个字节生成的(例如ASCII字符串,对[3]的引用和刚刚定义的UTF-16的字节顺序)由人类 - 不是因为大端机器写大端UTF-16而小端机写小端UTF-16的现象?

[1] http://www.ibm.com/developerworks/aix/library/au-endianc/

[2] http://teaching.idallen.com/cst8281/10w/notes/110_byte_order_endian.html

[3] ASCII字符串和字节序

[4] 字节顺序只影响数字的内存布局,而不影响字符串吗?这是一个字符串和机器的字节顺序之间的关系.

c unicode utf-16 endianness

5
推荐指数
3
解决办法
6701
查看次数

在调试时使用反汇编语言在什么情况下有用

我有以下基本问题:

  • 何时我们应该在调试中涉及反汇编

  • 如何解释反汇编,例如下面每个段代表什么

00637CE3 8B 55 08             mov         edx,dword ptr [arItem]
00637CE6 52                   push        edx
00637CE7 6A 00                push        0
00637CE9 8B 45 EC             mov         eax,dword ptr [result]
00637CEC 50                   push        eax
00637CED E8 3E E3 FF FF       call        getRequiredFields (00636030)
00637CF2 83 C4 0C             add 
Run Code Online (Sandbox Code Playgroud)

语言:C++

平台:Windows

c++ debugging disassembly

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

什么是在C中转换字节顺序的可移植方式

我正在尝试编写服务器,它将与任何可以建立套接字连接的标准客户端进行通信(例如telnet客户端)

它最初是一个echo服务器,当然不需要担心网络字节排序.

我熟悉ntohs,ntohl,htons,htonl函数.如果我传输的是16位或32位的整数,或者发送的字符串中的字符是2或4字节的倍数,那么它们本身就很棒.

我想创建一个对字符串进行操作的函数,例如:

str_ntoh(char* net_str, char* host_str, int len)
{
    uint32_t* netp, hostp;
    netp = (uint32_t*)&net_str;
    for(i=0; i < len/4; i++){
         hostp[i] = ntoh(netp[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

或类似的东西.上面的假设是单词大小为32位.我们不能确定发送机器上的字数不是16位还是64位正确?

对于客户端程序,例如telnet,它们必须在发送之前使用hton*,在接收数据后使用ntoh*,对吗?

编辑:对于那些人,因为1-char是一个字节,字节序无关紧要:

int main(void)
{
    uint32_t a = 0x01020304;
    char* c = (char*)&a;
printf("%x %x %x %x\n", c[0], c[1], c[2], c[3]);

}
Run Code Online (Sandbox Code Playgroud)

运行此代码段.我的输出如下:

$ ./a.out
  4 3 2 1
Run Code Online (Sandbox Code Playgroud)

那些关于powerPC芯片组的人应该得到'1 2 3 4'但我们这些关于intel芯片组的人应该看看我上面得到的东西.

c string portability network-programming endianness

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