我是C++的新手.我想做一个char*,但我不知道怎么做.
在Java中就是这样:
int player = 0;
int cpu = 0;
String s = "You: " + player + " CPU: " + cpu;
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我需要一个char*.
我专注于在字符串后粘贴整数.
在阅读了主题为" MD5真的那么糟糕 "之后,我正在考虑一个更好的生成哈希的解决方案.是否有更好的解决方案Adler,CRC32或SHA1?还是他们也坏了?
我已经做了几个简单的游戏:进入一个级别,直到最后,继续到下一个级别.
但我仍然想知道"真正的"游戏开发者如何用故事创造游戏.
以下是故事游戏的一些内容(我想知道它们是如何制作的):
最后几点是相同的三倍.
但是,我不认为他们有一个包含大量布尔值和整数的保存文件,用于保存以下内容:
当我谈论故事游戏时,我想:
这是一个级别级别游戏的几个例子:
谢谢
由于Java支持OpenGL,开发游戏的最佳选择是什么?
Java + OpenGLC+++ SDL+OpenGL我总是避免使用Java(当然是在游戏开发中)因为速度快.但是,我发现Java支持OpenGL.所以,我认为速度不再是问题......你应该选择什么?有评论吗?
由于我在Java和垃圾收集器方面的经验,Java对我来说会容易得多.
谢谢
出于测试目的,我经常开始在现有项目中键入一些代码.所以,我想要测试的代码出现在所有其他代码之前,如下所示:
public static void main(String[] args)
{
char a = '%';
System.out.println((int)a);
// To know where '%' is located in the ASCII table.
// But, of course, I don't want to start the whole project, so:
return;
// The real project starts here...
}
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨return-statement,因为下面的"死代码".(在C++中,编译器服从程序员并简单地编译return语句)
为了防止编译器抱怨,我写了一个愚蠢的if陈述:
if (0 != 1) return;
Run Code Online (Sandbox Code Playgroud)
我讨厌它.为什么编译器不能按我要求做?是否有一些编译标志或注释或其他什么来解决我的问题?
谢谢
我有RSA公钥的字节数组.我在互联网上发现我可以使用以下代码创建一个真正的PublicKey对象:
PublicKey publicKey =
KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));
Run Code Online (Sandbox Code Playgroud)
但每次运行此代码时,我都会使用该密钥获取加密数据的另一个结果.我确定我要加密的数据总是相同的,表示密钥的字节数组也是如此.
这是正常的吗?
这是我的代码总是产生另一个输出:
byte[] keyBytes = Base64.decodeBase64(rsa_1024_public_key);
// rsa_1024_public key is a constant String
Cipher c = Cipher.getInstance("RSA");
PublicKey publicKey =
KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes));
c.init(Cipher.ENCRYPT_MODE, publicKey);
return c.doFinal(password.getBytes());
Run Code Online (Sandbox Code Playgroud)
这可能是非对称加密算法的一部分?
谢谢.
我成功编译库LibXtract到共享对象libxtract.so并想在第二个项目中使用.
在提及项目中,我尝试在简单的函数上编译它:
#include <com_androidnative1_NativeClass.h>
#include <android/log.h>
#include "libxtract.h"
JNIEXPORT void JNICALL Java_com_androidnative1_NativeClass_showText
(JNIEnv *env, jclass clazz)
{
float mean = 0, vector[] = {.1, .2, .3, .4, -.5, -.4, -.3, -.2, -.1}, spectrum[10];
int n, N = 9;
float argf[4];
argf[0] = 8000.f;
argf[1] = XTRACT_MAGNITUDE_SPECTRUM;
argf[2] = 0.f;
argf[3] = 0.f;
xtract[XTRACT_MEAN]((void *)&vector, N, 0, (void *)&mean);
__android_log_print(ANDROID_LOG_DEBUG, "LIbXtract", "Button pushe2");
}
Run Code Online (Sandbox Code Playgroud)
我有扁平结构:
library libxtract.so我放入了mainproject/lib文件夹
我的Android.mk文件如下所示:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := …Run Code Online (Sandbox Code Playgroud) boolean a = true;
boolean b = true;
boolean c = false;
System.out.println(a || b && c); // true
System.out.println(b && c || a); // true
Run Code Online (Sandbox Code Playgroud)
我刚刚发现了我认为有点古怪的东西.为什么会这样,&&并且||处于不同的优先级?我原以为他们处于同一水平.以上说明了这一点.这两个陈述都是正确的,即使从左到右的评估对第一个给出错误而对第二个给出为真.
有谁知道这背后的原因?
(顺便说一下,我本来只是在这里使用了一大堆括号,但这是旧代码提出的问题)
我正在挖掘一些Java Math函数本机C源代码.特别是tanh(),我很想知道他们是如何实现那一个的.但是,我发现让我感到惊讶的是:
double tanh(double x) {
...
if (ix < 0x40360000) { /* |x|<22 */
if (ix<0x3c800000) /* |x|<2**-55 */
return x*(one+x); /* tanh(small) = small */
...
}
Run Code Online (Sandbox Code Playgroud)
正如评论所指出的那样,泰勒系列的tanh(x)大约为0,开头是:
tanh(x) = x - x^3/3 + ...
Run Code Online (Sandbox Code Playgroud)
那么为什么它们看起来像是这样实现的:
tanh(x) = x * (1 + x)
= x + x^2
Run Code Online (Sandbox Code Playgroud)
这显然不是正确的扩展,甚至比仅仅使用更差的近似tanh(x) = x(更快),如此图所示:
(粗线是顶部显示的那个.另一个灰色的是log(abs(x(1+x) - tanh(x))).Sigmoid当然是tanh(x)它本身.)
那么,这是实施中的一个错误,还是修复一些问题的黑客(比如数字问题,我真的无法想到)?请注意,我希望两种方法的结果完全相同,因为没有足够的mantisse位来实际执行加法1 + x,对于x <2 ^( - 55).