我正在编写一个程序,部件在CP437中呈现位图字体.
在一个呈现文本的函数中我希望能够char在编码转换之前检查CP437中是否有可用的文件,例如:
public static void DrawCharacter(this Graphics g, char c)
{
if (char_exist_in_encoding(Encoding.GetEncoding(437), c) {
byte[] src = Encoding.Unicode.GetBytes(c.ToString());
byte[] dest = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(437), src);
DrawCharacter(g, dest[0]); // Call the void(this Graphics, byte) overload
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有检查,CP437外的任何字符都将产生'?'(63,0x3F).我想完全隐藏任何无效字符.是否有char_exist_in_encoding 以下愚蠢方法以外的实现?
private static bool char_exist_in_encoding(Encoding e, char c)
{
if (c == '?')
return true;
byte[] src = Encoding.Unicode.GetBytes(c.ToString());
byte[] dest = Encoding.Convert(Encoding.Unicode, e, src);
if (dest[0] == 0x3F)
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
也许不是很相关,但位图是这样创建的:
Bitmap b …Run Code Online (Sandbox Code Playgroud) 我正在编写Linux内核驱动程序(用于ARM),在irq处理程序中我需要检查中断位.
bit
0/16 End point 0 In/Out interrupt
(very likely, while In is more likely)
1/17 End point 1 In/Out interrupt
...
15/31 End point 15 In/Out interrupt
Run Code Online (Sandbox Code Playgroud)
请注意,一次可以设置多个位.
所以这是代码:
int i;
u32 intr = read_interrupt_register();
/* ep0 IN */
if(likely(intr & (1 << 0))){
handle_ep0_in();
}
/* ep0 OUT */
if(likely(intr & (1 << 16))){
handle_ep0_out();
}
for(i=1;i<16;++i){
if(unlikely(intr & (1 << i))){
handle_ep_in(i);
}
if(unlikely(intr & (1 << (i + 16)))){
handle_ep_out(i);
}
}
Run Code Online (Sandbox Code Playgroud)
(1 << …
我正在努力在 Linux 中刷新嵌入式设备的先前 ROM 转储。我以前的转储包含 oob 数据。我用 写了它nandwrite -n -N -o /dev/mtd0 backup.bin,然后再次进行 ROM 转储。
通过比较新旧 ROM 转储,我看到了一些无法解释的情况:任何空块(填充 0xFF)的 oob(ecc 字节)的最后 24 个字节也应该是 0xFF,但新 ROM 中的那些dump 填充了 0x00,导致以后的写入失败。
oob 应该是:
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
Run Code Online (Sandbox Code Playgroud)
但对于nandwrite:
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF 00000000 00000000
00000000 00000000 00000000 00000000
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么?
我在nandwrite代码中添加了一个 hack,如果要写入的内容是0xFF,则跳过写入 NAND ,并且它起作用了。那么在尝试将空页写入 NAND 时会出现问题吗?
添加:
现在我在编写引导加载程序映像时也遇到了这个问题。图像不是页面对齐的,所以 …
我在我的计算机上安装了arm-linux-androideabi-gcc,但是当我尝试编译一个简单的hellow世界时,它会出错(我选择不使用ndk-build).我只想从命令行编译...
#include <iostream>
using namespace std;
int main (){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
错误:iostream:没有这样的文件或目录
我有arm-linux-androideabi-gcc ~/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin.
我试过包括 -I ~/android-ndk-r7b/platforms/android-9/arch-arm/usr
我也尝试过包括-lstdc++看它是否有效但没有......
./arm-linux-androideabi-g++ -o ff first.cpp -I /home/hari/android-ndk-r7b/platforms/android-9/arch-arm/usr -lstdc++
Run Code Online (Sandbox Code Playgroud) 我有一个类ItemChange<T>,看起来像这样:
public class ItemChange<T> where T : MyBase
{
public DateTime When { get; set; }
public string Who { get; set; }
public T NewState;
public T OldState;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它存储了一个对象的两个副本(NewState和OldState)。我用它来比较字段变化。
我现在正在尝试让它工作,我获得跨多个对象的更改列表,然后将几种不同类型的 T 列表连接到一个数组中,如下所示(注意:两者Object1都Object2源自MyBase:
public IEnumerable<ItemChange<T>> GetChangeHistory<T>(int numberOfChanges) where T : MyBase
{
IEnumerable<ItemChange<Object1>> obj1Changes= GetChanges<Object1>();
IEnumerable<ItemChange<Object2>> obj1Changes= GetChanges<Object2>();
return obj1Changes.Concat(obj2Changes).OrderByDescending(r => r.When).Take(numberofChanges);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要连接多种类型的更改,但随后我想获取最新数量的更改(由 定义numberOfChanges)
关于如何让下面的代码工作的任何建议,因为 Concat 行都会给我一个编译器错误(我假设我必须以某种特殊的方式进行转换才能使其工作)。
有什么办法可以做到这一点吗?
我怎样才能从一个实例化器传递到另一个实例器?假设我们有这门课.如何从foo(字符串,字符串)传递给foo(Uri)?
public foo
{
string path { get; private set; }
string query { get; private set; }
public foo (Uri someUrl)
{
// ... do stuff here
}
public foo (string path, string query)
{
Uri someUrl = new Uri(String.Concat(path, query);
// ... do stuff here to pass thru to foo(someUrl)
}
}
Run Code Online (Sandbox Code Playgroud) 我需要从以下范围之外加载视图:
$this->load->view();
Run Code Online (Sandbox Code Playgroud)
这似乎是从base/application/views目录工作.如何从/application/目录外部访问视图?
我想我将不得不延长CI_Loader class这将是最好的前进方式吗?
我还找到了包含view_paths的数组:
// base/system/core/Loader.php
// CI_Loader
/**
* List of paths to load views from
*
* @var array
* @access protected
*/
protected $_ci_view_paths = array();
Run Code Online (Sandbox Code Playgroud)
但是所有声明的变量上面的注释让我陷入困境
// All these are set automatically. Don't mess with them.
Run Code Online (Sandbox Code Playgroud)
关于从哪里去的任何想法将不胜感激:-)
我使用一个标签,其中从文本框中输入的文本显示在该标签中。现在,我想让标签文本滚动。我通过互联网环顾四周,并尝试将其写入标签内的代码中:
private void label1_Click(object sender, EventArgs e)
{
int Scroll;
string strString = "This is scrollable text...This is scrollable text...This is scrollable text";
Scroll = Scroll + 1;
int iLmt = strString.Length - Scroll;
if (iLmt < 20)
{
Scroll = 0;
}
string str = strString.Substring(Scroll, 20);
label1.Text = str;
}
Run Code Online (Sandbox Code Playgroud)
有没有人看到我做错了什么?
以前当我想创建一个点击式表单时,我很想使用平台调用来设置扩展窗口样式(GetWindowLong/ SetWindowLongin user32.dll).
刚才我想让它对Alt + Tab窗口列表不可见,我发现了一个覆盖CreateParams设置扩展窗口样式而不是使用GetWindowLong/ 的示例SetWindowong.
现在我有这个:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x80000 /* WS_EX_LAYERED */ | 0x20 /* WS_EX_TRANSPARENT */ | 0x80/* WS_EX_TOOLWINDOW */;
return cp;
}
}
Run Code Online (Sandbox Code Playgroud)
现在明显的变化不需要任何平台调用.
所以我的几个问题:
Control.CreateParams出现在msdn上,并有一个操作窗口样式的例子.那么为什么StackOverflow上的一些在线"示例"和答案会告诉人们使用GetWindowLong/ SetWindowLong?如果我想编写一个函数(可能也是一个类),它从不可变的查找表(在调用构造函数时修复)返回线性"平滑"的数据,如下所示:

例如func(5.0) == 0.5.
存储查找表的最佳方法是什么?
计算所需值的最佳方法是什么?(在实时效率方面,不包括准备时间)
arg并使用二进制搜索来查找最近的两个点.(次要)人们会称这种函数/类/数据结构/算法是什么?计算机科学中是否有正式名称?
我想我可能需要写自己的课.该类充其量应该是不可变的,因为在初始化之后不需要更改它,并且可能多个线程将使用它.我可能还需要通过索引获取键和值.