请考虑以下简化代码.我想从文件中提取一些二进制数据/流,并以十六进制格式将其打印到标准输出.
我有额外的3个字节0xFFFFFF.怎么了?额外的字节来自哪里?
产量
in:
2000FFFFFFAF00690033005A00
out:
2000FFFFFFAF00690033005A00
Run Code Online (Sandbox Code Playgroud)
program.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int i;
char raw[10] = {0x20,0x00,0xAF,0x00,0x69,0x00,0x33,0x00,0x5A,0x00};
FILE *outfile;
char *buf;
printf("in:\n\t");
for( i=0; i<10; i++ )
printf("%02X", raw[i]);
outfile = fopen("raw_data.bin", "w+b");
fwrite(raw, 1, 10, outfile);
buf = (char *) malloc (32 * sizeof(char));
fseek(outfile, 0, SEEK_SET);
fread(buf, 1, 10, outfile);
printf("\nout:\n\t");
for( i=0; i<10; i++ )
printf("%02X", buf[i]);
printf("\n");
fclose(outfile);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我以前的相关问题:
我的问题是:
????图像,则显示为? ? ? ?? ? ? ?使用此功能:
function arab($word){
$w = explode(' ',$word) ;
$f = array(array('?','?'),'?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?');
$t = array(array('?_','?_'),'?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_');
$my_arab = '' ;
foreach($w as $wo)
{
$r = array() ;
$wo = str_replace($f , $t ,$wo);
$ne = explode('_', $wo) ;
foreach($ne as $new) {
$new = str_replace('_','',$new) ;
array_unshift($r , $new);
}
$my_arab .= ' '.implode('',$r) ;
}
return trim($my_arab) ;
}
Run Code Online (Sandbox Code Playgroud)
但新问题是:
? ? ? ?
(分开的字母)它应该是: …
我正在学习使用 xlib,但无法XChangeProperty()为我工作。
我有一个简单的程序可以成功显示一个窗口。但是调用XChangeProperty()总是失败并显示错误代码error 1 (BadRequest)。
有人能告诉我我做错了什么吗?
这是我更改属性的代码。
static void
change_prop(Display *display, Window window)
{
unsigned char some_text[40] = "hello world!";
int retval;
Atom my_atom;
my_atom = XInternAtom(display, "PERSONAL_PROPERTY", False);
if (my_atom == None)
{
printf("### failed to create atom with name PERSONAL_PROPERTY\n");
return;
}
retval = XChangeProperty(display, /* connection to x server */
window, /* window whose property we want to change */
my_atom, /* property name */
XA_STRING, /* type of property */ …Run Code Online (Sandbox Code Playgroud) 我写了这个辅助功能扩展:
这适用于Gnome Shell v3.14和v3.16中的假设,但不适用于v3.10.它显示了重新启动它之后唯一的初始键盘修饰符状态,并且在此之后永远不会更新它.
这里是完整的代码:
const St = imports.gi.St;
const Mainloop = imports.mainloop;
const Main = imports.ui.main;
const Gdk = imports.gi.Gdk
let button, label, keymap;
function _update() {
let symbols = "????????";
let state = keymap.get_modifier_state();
label.text = " ";
for (var i=0; i<=8; i++ ) {
if (state & 1<<i) {
label.text += symbols[i];
} else {
//label.text += "";
}
}
label.text += " ";
}
function init() {
button = new St.Bin({ style_class: 'panel-button',
reactive: …Run Code Online (Sandbox Code Playgroud) 您是否知道任何键盘快捷键可以调整或切换终端的不透明度而无需右键单击并进入首选项?如果可能的话,这将是如此甜蜜.
我需要复杂的通用udev规则来确定USB设备插入任何USB集线器的某个端口.所以,我必须结合设备树的不同层的父属性...
我有这个:
$udevadm info --query=all --name=/dev/ttyUSB0 --attribute-walk
looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
. . .
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4':
KERNELS=="1-1.2.4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2':
KERNELS=="1-1.2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{devpath}=="1.2"
ATTRS{idVendor}=="0835"
...
ATTRS{idProduct}=="8500"
ATTRS{bDeviceClass}=="09"
ATTRS{product}=="USB2.0 Hub"
. . .
Run Code Online (Sandbox Code Playgroud)
然后我构建了这样的udev规则来识别某个USB集线器的某个端口:
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-1.2.4", ATTRS{idVendor}=="0835", ATTRS{idProduct}=="8500", SYMLINK+="port1"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用来自不同父层的属性时,它无法正常工作.
我知道udev仅支持来自一个特定父设备的附加属性.但我真的需要获得结合我设备的2个父节点的属性的规则
有人可以提出解决方案吗?得到它有什么诀窍吗?
XDefaultScreen和之间有什么区别XDefaultScreenOfDisplay?我可以看到它们分别返回一个整数和一个结构指针,但是:
linux ×2
xlib ×2
arabic ×1
arrays ×1
c ×1
debian ×1
event-loop ×1
gjs ×1
gnome ×1
gtk ×1
imagettftext ×1
php ×1
printf ×1
raspberry-pi ×1
terminal ×1
terminator ×1
ubuntu ×1
udev ×1