我想从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) 好的,我想创建一个与大量设备和屏幕兼容的布局.正如我一直在研究的那样,我发现最常见的屏幕分辨率是249x320,480x800,600x1024,720x1280(以及其他一些与这些屏幕成比例的屏幕).
好吧,在阅读文档后,我发现有两种方法可以做到这一点.直到3.2 Android版本,我可以使用限定符作为"小,普通,大,xlarge"的布局,并将它们与"端口"(纵向)或"土地"(横向"相结合.
现在,第二种方式(似乎是最推荐的)仅适用于Android 3.2及更高版本.无论屏幕方向如何(???),都必须指定必须使用布局的最小宽度.
因为在使用第二种方法时你不能指定端口或地面限定符,我更喜欢第一种方法.我的问题是:第一种兼容Android 3.2及更高版本的方法是什么?我必须使用Android <3.2的第一种方法和Android> 3.2的第二种方法吗?如果是这样,我应该创建两个项目,或者可以组合这两个方法(为一般大小限定符和特定的最小宽度限定符创建大约10个布局大小).我想这需要更多的资源.
谢谢,抱歉我的语言不好,
作为世界上任何一个程序员,至少有一次他/她一生都在尝试创建自己的“革命性”,新的,唯一的操作系统。: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)我回来了 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 main,int start我没有收到任何错误。这意味着什么? …
我正在尝试使用 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?
我正在尝试深入理解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=01h和e_cp=DOS header+DOS stub?
这是一个更笼统的菜鸟问题。我正在 Linux(更准确地说是 Ubuntu)中开发一个小应用程序,此时我有一个可执行文件、一个共享库(.so)、一个配置文件 (.conf),其中包含一些可供应用程序读取的设置一开始,一个数据文件夹,其中包含要在应用程序生命周期中使用的图像和其他资源(也可以修改、删除的资源),当然,我需要一些日志和消息文件(现在我正在使用syslog) .
所以,我的问题是,当应用程序安装在客户端的计算机上时,这些应用程序中的每一个都应该存储在哪里?在 Linux 中组织所有应用程序文件的标准方法是什么?在 Windows 上,所有东西通常都可以在 C:\Program Files\(App Folder) 中找到,但在 Linux 上,看起来更多(或更少)有组织。你能给我一些关于这个问题的建议吗?
我正在尝试理解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.o和g++ -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) 来自可移植可执行文件和 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) 我试图理解这两个概念.我正在阅读的手册非常简短,像多通道算法这样的东西对我来说是新的.我想有一些例子(不是代码)我需要在哪里使用不变量或精确变量,只是为了得到一个大致的想法,所以我可以继续而不留下任何东西.
当他们说
GLSL不保证不同着色器中的两个相同计算将产生完全相同的值
我不知道在不同的着色器中我将如何以及何时需要2个相同的计算.
android ×2
assembly ×2
c++ ×2
elf ×2
header ×2
linux ×2
size ×2
build ×1
crt ×1
debugging ×1
directory ×1
dos ×1
exe ×1
executable ×1
gcc ×1
glsl ×1
hard-drive ×1
invariants ×1
keyword ×1
offset ×1
organization ×1
osdev ×1
php ×1
porting ×1
pragma ×1
qualifiers ×1
runtime ×1
screen ×1
sector ×1
segment ×1
shader ×1
ubuntu ×1
x86-16 ×1