小编ali*_*ali的帖子

Android应用程序和PHP脚本之间的特殊字符

我想从PHP页面获取一些文本到Android应用程序.只要字符是ASCII(最多128个)就没有问题,但是当我想要显示特殊字符时,如'Ţ',''(所谓的Latin-1 Supplement和/或Latin Extended-A - 见到它Unicode图表)我在我的Android应用程序( )中得到了奇怪的符号.

问题是我的Android应用程序无法处理来自Latin-1 Supplement(PHP可以)的字符,而是来自Latin Extended-A字符集(PHP不能)的字符.我不知道使用两种语言的常见字符集,因为Java能够读取PHP的那种不是,反之亦然.

获取PHP页面内容的我的Java函数是这样的:

public static String GetData() {
    byte[] Bresult = null;
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://www.mypage.com/script.php");
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("var", "val"));
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
        HttpResponse response = client.execute(post);
        StatusLine statusLine = response.getStatusLine();
        if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
            Bresult = EntityUtils.toByteArray(response.getEntity());
            Result = new String(Bresult, "UTF-8");
        }
    } catch (UnsupportedEncodingException e) {
        Log.w("MYAPP", "Unsupported Encoding Exception (" + e.getMessage() + ")");
    } catch …
Run Code Online (Sandbox Code Playgroud)

php android special-characters

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

Android多屏限定符定义

好的,我想创建一个与大量设备和屏幕兼容的布局.正如我一直在研究的那样,我发现最常见的屏幕分辨率是249x320,480x800,600x1024,720x1280(以及其他一些与这些屏幕成比例的屏幕).

好吧,在阅读文档后,我发现有两种方法可以做到这一点.直到3.2 Android版本,我可以使用限定符作为"小,普通,大,xlarge"的布局,并将它们与"端口"(纵向)或"土地"(横向"相结合.

现在,第二种方式(似乎是最推荐的)仅适用于Android 3.2及更高版本.无论屏幕方向如何(???),都必须指定必须使用布局的最小宽度.

因为在使用第二种方法时你不能指定端口或地面限定符,我更喜欢第一种方法.我的问题是:第一种兼容Android 3.2及更高版本的方法是什么?我必须使用Android <3.2的第一种方法和Android> 3.2的第二种方法吗?如果是这样,我应该创建两个项目,或者可以组合这两个方法(为一般大小限定符和特定的最小宽度限定符创建大约10个布局大小).我想这需要更多的资源.

谢谢,抱歉我的语言不好,

size android screen qualifiers

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

组装-读取虚拟磁盘的下一个扇区

作为世界上任何一个程序员,至少有一次他/她一生都在尝试创建自己的“革命性”,新的,唯一的操作系统。:D

好吧,我正在使用一个虚拟仿真器(Oracle VM Virtual Box),为此我创建了一个带有vmdk磁盘的新的unknwon操作系统。我喜欢vmdk,因为它们只是纯文件,因此我可以将引导加载程序粘贴到虚拟硬盘的前512个字节上。

现在,我试图读取该虚拟磁盘的下一个扇区,在该扇区上粘贴一个简单的内核,该内核将显示一条消息。

我有两个问题:

  • 我是否在正确读取第二段(前-512字节-被引导程序占用)? 码:

    ReadDisk:
        mov bx, 0x8000  ; segment
        mov es, bx
        mov bx, 0x0000  ; offset
    
        mov ah, 0x02  ; read function
        mov al, 0x01  ; sectors - this might be wrong, trying to read from hd
        mov ch, 0x00  ; cylinder
        mov cl, 0x02  ; sector
        mov dh, 0x00  ; head
        mov dl, 0x80  ; drive - trying to read from hd
        int 0x13   ; disk int
        jc ReadDisk
        jmp [es:bx]   ; …
    Run Code Online (Sandbox Code Playgroud)

assembly osdev sector hard-drive x86-16

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

在 C 或汇编中制作一个简单的 CRT0

我回来了 C/C++ 和 ASM,我想玩一点火。我发现当您将代码编译并链接到 Windows 的可执行文件中时,它会动态链接到一些库,这些库必须存在于任何希望运行该应用程序的计算机上。您可以指定编译器不链接它们并为此创建自己的库。

除此之外(如果我在这里所说的一切都错了,请纠正我)还有一个目标文件,它总是沿着我们应用程序的主要代码编译和链接。它是 crt0.o(C 运行时)文件,据我所知,它准备堆栈、获取 argc 和 argv 并调用主函数(可能还有其他东西)。我也相信它是系统在执行应用程序时调用的第一段代码。

所以,我试图创建一个简单的 crt0.obj 并将它链接到一个简单的 C++ 对象文件

int main(int argc, char** argv) {
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

我使用 GCC 并且我不想使用标准库,所以我的命令看起来像:

g++ -s -nostartfiles -nodefaultlibs -nostdlib testapp.cpp -o test.exe crt0.o
Run Code Online (Sandbox Code Playgroud)

我想-nostartfiles指令是告诉链接器不要嵌入默认的 crt0.o,所以它希望我为任何函数提供每个定义并处理应用程序的启动。我在这里有点困惑。

无论如何,我想创建一个非常基本的 crt0 对象文件,这足以让 GCC 创建我的可执行文件,并让系统启动它。我知道 Internet 上有许多代码文件(C 和 ASM),但我想编写自己的代码文件以了解它的工作原理。我需要的不仅仅是代码,还有一些关于它必须做什么以及如何编译/链接以实现它的帮助。如果您知道任何有用的链接,也非常感谢。

我的疑问是:
1.编译器/链接如何从我的代码和 C 运行时创建最终文件?我是否必须从 crt0.o 调用 main 函数(使用 extern 指令)?当我执行时,g++ -s -nostartfiles -nodefaultlibs -nostdlib testapp.cpp -o test.exe我收到“*未定义对 __main* 的引用”错误。在crt0.o文件中定义了main函数吗?奇怪的是,如果我改变了int mainint start我没有收到任何错误。这意味着什么? …

c++ assembly runtime crt

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

将一些代码移植到 GCC,#pragma 指令有一些问题

我正在尝试使用 GCC 编译此代码,并且我有这些#pragma指令,我正在尝试将这些指令转换为 GCC 可理解的指令,但我无法弄清楚如何:

#pragma section(".CRT$XCA", read, write)
#pragma data_seg(".CRT$XCA")        // start of ctor section
_PVFV __xc_a[] = {0};

#pragma section(".CRT$XCZ", read, write)
#pragma data_seg(".CRT$XCZ")        // end of ctor section
_PVFV __xc_z[] = {0};

#pragma data_seg()
#pragma comment(linker, "/merge:.CRT=.rdata")
Run Code Online (Sandbox Code Playgroud)

我知道要创建一个新的部分,您可以使用,__attribute__ ((section (".CRT$XCZ")))但是呢data_seg

c++ gcc porting pragma c-preprocessor

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

DOS标头中的e_cblp和e_cp是什么?

我正在尝试深入理解DOS标题,我坚持使用这些标题.我知道唯一需要的字节是MZ签名和指向PE部分的指针,但我必须知道这两个是什么:

USHORT e_cblp;          // Bytes on last page of file
USHORT e_cp;            // Pages in file
Run Code Online (Sandbox Code Playgroud)

在大多数可执行文件的二进制代码中,这些值分别为90h和03h.一个页面是512字节的代码,所以有3个页面,但在哪里?我在哪里可以找到它们?如何在512字节的最后一页中识别这些90h(144)字节?

此信息仅由DOS请求.将在DOS中运行的PE文件的唯一代码是DOS存根,它不是3页代码而只是64字节.那么,90h和03h必须做什么?我不能只说e_cblp=01he_cp=DOS header+DOS stub

executable exe header dos portable-executable

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

Linux 中的程序数据文件夹

这是一个更笼统的菜鸟问题。我正在 Linux(更准确地说是 Ubuntu)中开发一个小应用程序,此时我有一个可执行文件、一个共享库(.so)、一个配置文件 (.conf),其中包含一些可供应用程序读取的设置一开始,一个数据文件夹,其中包含要在应用程序生命周期中使用的图像和其他资源(也可以修改、删除的资源),当然,我需要一些日志和消息文件(现在我正在使用syslog) .

所以,我的问题是,当应用程序安装在客户端的计算机上时,这些应用程序中的每一个都应该存储在哪里?在 Linux 中组织所有应用程序文件的标准方法是什么?在 Windows 上,所有东西通常都可以在 C:\Program Files\(App Folder) 中找到,但在 Linux 上,看起来更多(或更少)有组织。你能给我一些关于这个问题的建议吗?

linux directory ubuntu application-data organization

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

ELF程序标题段大小和偏移量

我正在尝试理解ELF格式,现在有些事情我没有得到关于程序头中定义的段.我有这个小代码,我用g ++(Linux上的x86_x64)转换为ELF文件:

#include <stdlib.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    if (argc == 1)
    {
        cout << "Hello world!" << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

随着g++ -c -m64 -D ACIS64 main.cpp -o main.og++ -s -O1 -o Main main.o.现在,使用readelf我得到这个段列表:

Program Headers:
Type           Offset             VirtAddr           PhysAddr
               FileSiz            MemSiz             Flags      Align
PHDR           0x0000000000000040 0x0000000000400040 0x0000000000400040
               0x00000000000001f8 0x00000000000001f8 R E        8
INTERP         0x0000000000000238 0x0000000000400238 0x0000000000400238
               0x000000000000001c 0x000000000000001c R          1
[Requesting program …
Run Code Online (Sandbox Code Playgroud)

size header elf offset segment

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

微小的“手动”创建 ELF 导致分段错误

来自可移植可执行文件和 Windows,我尝试在Linux (Ubuntu AMD64)中使用NASM创建一个小型ELF可执行文件。我的一小段代码如下所示:

BITS 64
; The default virtual address where the executable is linked
_START_VAD                  equ     0x400000

; Here I write the header byte by byte
ELF_HEADER:
    .ident_magic            db      0x7f, "ELF"
    .ident_class            db      2
    .ident_data             db      1
    .ident_version          db      1
    .ident_osabi            db      0
    .ident_abiversion       db      0
    ; Pad with zeros until we have 16 bytes for the identifier
    times 16-$+ELF_HEADER   db      0
    .object_type            dw      2
    .machine                dw      0x3e
    .version                dd      1
    .entry_point …
Run Code Online (Sandbox Code Playgroud)

linux debugging build elf segmentation-fault

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

GLSL中的不变和精确关键字

我试图理解这两个概念.我正在阅读的手册非常简短,像多通道算法这样的东西对我来说是新的.我想有一些例子(不是代码)我需要在哪里使用不变量或精确变量,只是为了得到一个大致的想法,所以我可以继续而不留下任何东西.

当他们说

GLSL不保证不同着色器中的两个相同计算将产生完全相同的值

我不知道在不同的着色器中我将如何以及何时需要2个相同的计算.

shader glsl invariants keyword

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